0

我是 Perl 的新手。

我正在使用以下 perl 代码发送邮件。

它工作正常。

但是我怎样才能在其中包含 html 内容呢?

use strict;
use warnings;

use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTP ();
use Email::Simple ();
use Email::Simple::Creator ();

my $smtpserver = 'xxxx.xx.x.x.';
my $smtpport = 25;
my $smtpuser   = 'test@test.com';
my $smtppassword = 'xxxxx';

my $transport = Email::Sender::Transport::SMTP->new({
  host => $smtpserver,
  port => $smtpport,
  sasl_username => $smtpuser,
  sasl_password => $smtppassword,
});

my $email = Email::Simple->create(
  header => [
    To      => 'xxx@xxxx.com',
    From    => 'test@test.com',
    Subject => 'Hi!'

  ],
  body => "<table><tr><td>try</td></tr></table>",
);

sendmail($email, { transport => $transport });
print "Success \n";
1;
4

1 回答 1

5

使用 Email::* 命名空间中的模块的乐趣在于它们可以很好地协同工作。目前您正在使用 Email::Simple 创建电子邮件并使用 Email::Sender 发送它。但现在您不再想创建简单的电子邮件,而是想创建更复杂的电子邮件。像这样发送复杂电子邮件的格式是MIME。因此,您应该在 Email::MIME 命名空间中寻找可以代替 Email::Simple 的东西。Email::MIME::CreateHTML看起来正是您想要的。

来自剧情简介:

use Email::MIME::CreateHTML;
my $email = Email::MIME->create_html(
        header => [
                From => 'my@address',
                To => 'your@address',
                Subject => 'Here is the information you requested',
        ],
        body => $html,
        text_body => $plain_text
);

use Email::Send;
my $sender = Email::Send->new({mailer => 'SMTP'});
$sender->mailer_args([Host => 'smtp.example.com']);
$sender->send($email);

看起来这很简单,可以转换为您的使用情况。

于 2013-03-12T13:54:59.160 回答