如何使用perl在我的电子邮件中发送html内容

时间:2013-03-12 06:07:27

标签: perl

我是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;

1 个答案:

答案 0 :(得分: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);

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