使用带有sendmail的perl发送电子邮件

时间:2016-09-12 21:36:32

标签: perl email

我正在尝试使用perl中的sendmail发送电子邮件。电子邮件已发送,但我作为主题发送的内容会添加到电子邮件中的“收件人:”中。例如,如果来自地址from@gmail.com,则地址为to@gmail.com且主题为"test subject"。我收到Reply-to:字段为from@gmail.com,"Subject:test.email","To:to"@gmail.com,"Content-type:text/plain"

的电子邮件

这是我的代码:

     open(SENDMAIL, "|/usr/lib/sendmail -oi -t '$to_email' -f '$from_email'") || ($error_message .= "<P>Unable to open email process.</P>");
     print SENDMAIL $reply_to;
     print SENDMAIL $subject;
     print SENDMAIL $send_to;
     print SENDMAIL "Content-type: text/plain\n\n";
     print SENDMAIL $content;
     close(SENDMAIL);

如果我删除了$ reply_to和$ send_to行,则该电子邮件会附带from:字段 作为Apache服务器。

任何帮助将不胜感激。我不想使用像Email::MIME这样的任何其他库,因为它在我的系统上不存在。

1 个答案:

答案 0 :(得分:2)

我不确定你所展示的内容有什么问题,但这里有一些工作代码

my ($header, $From, $To, $Cc, $ReplyTo, $Subject);

$From    = "From: $from";
$To      = "To: $to";
$Cc      = "Cc: $cc_addresses";
$ReplyTo = "Reply-To: $replyto";
$Subject = "Subject: $subj";

# Form the header.  The fields always submitted:
$header = join("\n", $From, $To, $ReplyTo, $Subject, '');

# Optional fields
$header .= "$Cc\n" if $cc_addresses;

open(SENDMAIL, "|/usr/sbin/sendmail -oi -t")
    or carp "Can't fork for sendmail: $!\n";
say SENDMAIL "$header\n$msg_cont";
close(SENDMAIL);

请注意。之前有my $cc_addresses = '';,然后(可能)建立起来。