2009-02-18 84 views

回答

13

个人我建议你使用我的模块Email::Send::SMTP::TLS 它工作得很好通过谷歌邮件的TLS 。

谢谢。

use Email::Send; 

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

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

eval { $mailer->send($email) }; 
die "Error sending email: [email protected]" if [email protected]; 
1

CPAN上有多个SMTP模块,例如Net::ESMTP。另外,sendmail很可能使用SMTP来与邮件服务器通信,所以你不想使用它的真正原因是什么?

0

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

展示了如何使用Perl来发送电子邮件的一个例子:http://www.perlfect.com/articles/sendmail.shtml

+0

OP说:“我不想用sendmail” – jfs 2009-02-18 13:44:45

6

按照注释,它如果要通过谷歌的SMTP发送电子邮件,或只是一般发送电子邮件(也许您的Gmail帐户),目前尚不清楚。你应该检查出Email::Send和可能Email::Send::Gmail

另外,如果您真正要问的是如何将电子邮件从不是Gmail的地方移动到Gmail,我使用IMAP使用Mail::BoxMail::Box::IMAP4::SSL后端的运气非常好。您可以看到使用示例here

+0

Email ::发送最近已被弃用,转而使用电子邮件::发件人 – 2009-02-18 12:09:07

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?

2

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

+0

Mail ::发件人是好东西。 – daotoad 2009-02-18 18:53:08

1

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

0

Email::Send(如Fayland林的回答中)被弃用:

电子邮件发送::是怎么回事了......嗯,不是真的要离开,但它 被正式标志着“出来的青睐“。

这个工作对我来说,使用首选电子邮件发件人:::

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  => '[email protected]', 
    From => '[email protected]', 
    Subject => 'Hi!', 
    ], 
    body => "This is my message\n", 
); 

sendmail($email, { transport => $transport }); 
相关问题