我正在尝试使用来自中列出的示例来使用测试perl的电子邮件 http://learn.perl.org/examples/email.html。我在Windows 7上运行它。 出于某种原因,Email :: Sender :: Simple正在引用加载Email :: Sender时未加载的其他模块。
如何加载这些模块以便加载所有依赖项而无需在每个模块中搜索所有引用的包?目前我正在使用ActiveState和ppm安装。
use 5.14.2;
use strict;
use warnings;
# first, create your message
use Email::MIME;
my $message = Email::MIME->create(
header_str => [
From => 'you@example.com',
To => 'friend@example.com',
Subject => 'Happy birthday!',
],
attributes => {
encoding => 'quoted-printable',
charset => 'ISO-8859-1',
},
body_str => "Happy birthday to you!\n",
);
# send the message
use Email::Sender::Simple qw(sendmail);
sendmail($message);
当然,我可以转储%INC但输出包含大量模块。 理想情况下,我想加载Email :: MIME和Email :: Sender :: Simple并完成这项工作。
答案 0 :(得分:3)
我建议使用Mail::Sender
,您可以使用ppm install Mail::Sender
在ActivePerl中安装它,在Linux中安装
sudo apt-get install libmail-sender-perl
此模块功能多样,支持多个附件,内联,SMTP密码验证(甚至包括NTLM - 与Exchange服务器通信所必需的)。
这是使用Mail::Sender
发送HTML邮件的示例:
use Mail::Sender;
my $sender = new Mail::Sender({
# provider may require using port 587:
smtp => "smtp.example.com",
# auth parameters below are optional
# and depend on provider requirements
auth => "LOGIN",
authid => $username,
authpwd => $password,
from => "myself@example.com",
});
$sender->Open({
to => "recipient@example.com",
cc => "anotherguy@example.com",
subject => "Subject line",
ctype => "text/html",
encoding => "7bit",
}) or die ($Mail::Sender::Error, "\n");
my $html = "<html><body>Test HTML content</body></html>";
$sender->SendEx($html)
or die ($Mail::Sender::Error, "\n");
$sender->Close();
print "Test message has been sent\n";
答案 1 :(得分:1)
Email :: Sender :: Simple 和 Email :: Sender 是两个不同的模块,所以你必须这样做:
来自cmd:
C:\>cpan
C:\>install Email::Sender::Simple
就是这样。