12

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

4

9 回答 9

12

我个人建议您使用我的模块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 $@;
于 2009-02-18T11:31:48.240 回答
6

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

或者,如果您真正要问的是如何将电子邮件从不是 Gmail 的地方移动到 Gmail,那么使用Mail::BoxMail::Box::IMAP4:: SSL后端。您可以在此处查看使用示例。

于 2009-02-18T10:48:44.520 回答
2

我一直使用Mail::Sender并且运气很好。

于 2009-02-18T13:18:31.557 回答
1

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

于 2009-02-18T10:21:46.363 回答
1

您可能想要查看的另一种可能性是使用 CPAN 中的Email::Send::Gmail模块。这将允许您将电子邮件从您的 Gmail 帐户发送到任何帐户(例如,给您自己)

于 2009-02-26T11:29:26.713 回答
1

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 });
于 2015-09-06T15:11:00.097 回答
0

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

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

于 2009-02-18T10:22:21.993 回答
0

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

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

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

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

在托管的 Unix 帐户上:如何将 CPAN 模块安装到本地目录中?

于 2009-02-18T11:00:39.063 回答
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

于 2009-11-22T22:54:07.103 回答