2

我正在尝试使用 http://learn.perl.org/examples/email.html中列出的示例来使用测试 perl 的电子邮件。我在 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 并完成这项工作。

4

2 回答 2

3

我建议使用Mail::Sender,你可以在 ActivePerl 中使用ppm install Mail::Sender,在 Linux 中使用

sudo apt-get install libmail-sender-perl

这个模块非常通用,支持多个附件、内联、SMTP 密码身​​份验证(甚至包括 NTLM - 与 Exchange 服务器通信所必需的)。

这是使用以下方式发送 HTML 邮件的示例Mail::Sender

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";
于 2012-12-29T23:42:53.320 回答
2

Email::Sender::Simple和只是Email::Sender是两个不同的模块,所以你必须这样做:

从命令:

C:\>cpan
C:\>install Email::Sender::Simple

就这样。

于 2012-12-29T23:30:15.083 回答