如何使用SMTP和Perl向我的Gmail帐户发送电子邮件?

时间:2009-02-18 10:14:59

标签: perl email smtp gmail

我不想使用sendmail发送电子邮件,但更愿意使用SMTP。如何使用Perl向我的GMAIL帐户发送电子邮件?

9 个答案:

答案 0 :(得分:13)

我个人建议您使用我的模块Email::Send::SMTP::TLS 通过Google Mail的TLS可以很好地工作。

感谢。

use Email::Send;

my $mailer = Email::Send->new( {
    mailer => 'SMTP::TLS',
    mailer_args => [
        Host => 'smtp.gmail.com',
        Port => 587,
        User => 'username@gmail.com',
        Password => 'password',
        Hello => 'fayland.org',
    ]
} );

use Email::Simple::Creator; # or other Email::
my $email = Email::Simple->create(
    header => [
        From    => 'username@gmail.com',
        To      => 'to@mail.com',
        Subject => 'Subject title',
    ],
    body => 'Content.',
);

eval { $mailer->send($email) };
die "Error sending email: $@" if $@;

答案 1 :(得分:6)

根据评论,目前尚不清楚您是想通过Google的SMTP发送电子邮件,还是仅发送电子邮件(可能是您的Gmail帐户)。您应该查看Email::Send,可能还有Email::Send::Gmail

或者,如果您真正问的是如何将电子邮件从非Gmail邮件移动到Gmail,我使用Mail::BoxMail::Box::IMAP4::SSL的IMAP运气得很好后端。您可以看到使用here的示例。

答案 2 :(得分:2)

我一直使用Mail::Sender非常好运。

答案 3 :(得分:1)

CPAN上有多个SMTP模块,例如Net::ESMTP。此外,sendmail很可能确实使用SMTP与邮件服务器进行通信,那么您不想使用它的真正原因是什么?

答案 4 :(得分:1)

您可能希望查看的另一种可能性是使用CPAN中的Email::Send::Gmail模块。这样,您就可以将Gmail帐户中的电子邮件发送到任何帐户(例如,自己)

答案 5 :(得分:1)

Email::Send(在Fayland Lam的回答中使用)已被弃用:

  

电子邮件::发送消失......好吧,并没有真正消失,但它已经消失了   正式标记"失宠。"

这适用于我,使用首选的Email :: Sender:

use strict;
use warnings;

use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTPS ();
use Email::Simple ();
use Email::Simple::Creator ();

my $smtpserver = 'server';
my $smtpport = 587;
my $smtpuser   = 'username';
my $smtppassword = 'password';

my $transport = Email::Sender::Transport::SMTPS->new({
  host => $smtpserver,
  port => $smtpport,
  ssl => "starttls",
  sasl_username => $smtpuser,
  sasl_password => $smtppassword,
});

my $email = Email::Simple->create(
  header => [
    To      => 'mymail@gmail.com',
    From    => 'sender@example.com',
    Subject => 'Hi!',
  ],
  body => "This is my message\n",
);

sendmail($email, { transport => $transport });

答案 6 :(得分:0)

如果您不熟悉CPAN(综合Perl存档网络),我建议您为该网站添加书签。它包含第三方(主要是经过良好测试的)库。

显示如何使用perl发送电子邮件的示例:http://www.perlfect.com/articles/sendmail.shtml

答案 7 :(得分:0)

我碰巧使用MIME::Lite,它是Net::SMTP的包装器,以简化构建电子邮件对象,文件附件和发送有效负载的过程。

如果您不熟悉安装模块,请检查:

在Windows上,使用ActiveState Perl程序包管理器(在开始菜单中)

在Unix上,使用CPAN:$ sudo cpan Module::Name

在托管的Unix帐户上:How can I install a CPAN module into a local directory?

答案 8 :(得分:0)

如果您不喜欢sendmail,另一个选择是使用Postfix,另一个MTA。

以下是我使用gmail在我的机器上设置它的说明: http://souptonuts.sourceforge.net/postfix_tutorial.html

如果您收到有关未能从Thawte Premium Server CA验证证书的警告,这也可能很有用。 http://ubuntuforums.org/archive/index.php/t-894355.html

相关问题