我不想使用sendmail发送电子邮件,但更愿意使用SMTP。如何使用Perl向我的GMAIL帐户发送电子邮件?
答案 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::Box和Mail::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