我不想使用 sendmail 发送电子邮件,但更喜欢使用 SMTP。如何使用 Perl 向我的 GMAIL 帐户发送电子邮件?
9 回答
我个人建议您使用我的模块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 $@;
根据评论,目前尚不清楚您是想通过 Google 的 SMTP 发送电子邮件,还是一般只发送电子邮件(可能发送到您的 gmail 帐户)。您应该查看Email::Send和可能的Email::Send::Gmail。
或者,如果您真正要问的是如何将电子邮件从不是 Gmail 的地方移动到 Gmail,那么使用Mail::Box和Mail::Box::IMAP4:: SSL后端。您可以在此处查看使用示例。
我一直使用Mail::Sender并且运气很好。
CPAN 上有多个 SMTP 模块,例如Net::ESMTP。此外,sendmail 很可能确实使用 SMTP 与邮件服务器进行通信,那么您不想使用它的真正原因是什么?
您可能想要查看的另一种可能性是使用 CPAN 中的Email::Send::Gmail模块。这将允许您将电子邮件从您的 Gmail 帐户发送到任何帐户(例如,给您自己)
Email::Send(如 Fayland Lam 的回答中所用)已被弃用:
Email::Send 正在消失……嗯,并没有真正消失,但它被正式标记为“失宠”。
这对我有用,使用首选的电子邮件::发件人:
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 });
如果您不熟悉CPAN(综合 Perl 存档网络),我建议您为该站点添加书签。它包含第三方(大部分经过良好测试)库。
显示如何使用 perl 发送电子邮件的示例:http ://www.perlfect.com/articles/sendmail.shtml
我碰巧使用MIME::Lite
,它是一个包装器,Net::SMTP
用于简化构建电子邮件对象、文件附件和发送有效负载的过程。
如果您不熟悉安装模块,请检查:
在 Windows 上,使用 ActiveState Perl 包管理器(在开始菜单中)
在 Unix 上,使用 CPAN:$ sudo cpan Module::Name
在托管的 Unix 帐户上:如何将 CPAN 模块安装到本地目录中?
如果您只是不喜欢 sendmail,另一种选择是使用Postfix,另一个 MTA。
以下是我使用 gmail 在我的机器上设置它的说明:http: //souptonuts.sourceforge.net/postfix_tutorial.html
如果您收到有关无法验证来自 Thawte Premium Server CA 的证书的警告,这也可能很有用。 http://ubuntuforums.org/archive/index.php/t-894355.html