我想在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,因为我想的东西开箱即用,无需费心安装任何额外的。
从下面的行中删除第二“\ 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
你实际的错误是,你把\n\n
主语之后。 这结束了头,并开始身体。
你真的应该使用的Net :: SMTP附带了几乎所有的Perl分发。 这样一来,你不是取决于行为sendmail
。
该Net::SMTP
模块是使用相当简单了。 很多人,因为这是一个有点太接近原始协议不喜欢它。 很多人喜欢的东西一样的Mail :: Sendmail的 ,但是这不是Perl的标准发行版的一部分。