我正在尝试在perl中发送电子邮件时设置一些电子邮件标头。我有以下代码,但Content-Type和X-Priority将在消息正文中发送。以下是我的代码。
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,因为我想要一些开箱即用的东西,而无需另外安装任何其他东西。
答案 0 :(得分:2)
从下面的行中删除第二个“\ n”。 Sendmail将第一个空行视为“标题结尾”。
打印邮件“主题:$ subject \ n \ n”;
-i
命令行选项,以避免对以点--
命令行选项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
答案 1 :(得分:0)
您的实际错误是您将\n\n
放在主题之后。结束标题并启动正文。
你真的应该使用几乎所有Perl发行版附带的Net::SMTP。这样,您就不会依赖sendmail
的行为。
Net::SMTP
模块也非常简单易用。很多人不喜欢它,因为它与原始协议有点太接近了。很多人喜欢像Mail::Sendmail这样的东西,但这不是Perl标准发行版的一部分。