设置电子邮件标题用Perl(Setting email headers with perl)

2019-09-28 03:53发布

我想在Perl中发送电子邮件时,设置一些电子邮件标题。 我有以下的代码,但是Content-Type和X优先在邮件的正文被发送。 下面是我的代码。

my $sendmail = "| /usr/sbin/sendmail -t";

open(MAIL,$sendmail)
        or die("Unable to open sendmail.  $!");
print MAIL "Reply-to: $reply\n";
print MAIL "From: $from\n";
print MAIL "To: $to\n";
print MAIL "Subject: $subject\n\n";
print MAIL "Content-Type: text/plain\n";
print MAIL "X-Priority: 1\n";
print MAIL "blah\n";
print MAIL "$link\n\n";
close(MAIL);

我使用sendmail,因为我想的东西开箱即用,无需费心安装任何额外的。

Answer 1:

从下面的行中删除第二“\ n”个。 Sendmail的治疗的第一个空行的“头端”。

打印MAIL “主题:$主题\ n \ n”;

附加修正:

  • 添加-i命令行选项来避免线路的特殊处理开始点
  • 指定的收件人作为命令行参数通过sendmail后--命令行选项
  • 检查sendmail的退出代码由返回的close
  • 使用单个打印带有“这里的文档”

print MAIL <<"END_OF_MESSAGE";
Reply-to: $reply
From: $from
To: $to
Subject: $subject
X-Priority: 1

blah blah blah
$link
END_OF_MESSAGE


Answer 2:

你实际的错误是,你把\n\n主语之后。 这结束了头,并开始身体。

你真的应该使用的Net :: SMTP附带了几乎所有的Perl分发。 这样一来,你不是取决于行为sendmail

Net::SMTP模块是使用相当简单了。 很多人,因为这是一个有点太接近原始协议不喜欢它。 很多人喜欢的东西一样的Mail :: Sendmail的 ,但是这不是Perl的标准发行版的一部分。



文章来源: Setting email headers with perl