这是我用谷歌搜索后从不同来源尝试的代码。我无法在邮件中添加正文或缺少附件。我不能同时拥有它们。
my $boundary = '==' . time . '==';
my $msg = new Mail::Send;
$msg->to($to);
$msg->add('From',$from);
$msg->subject($subject);
$msg->add('Content-Type', qq(multipart/mixed; boundary="$boundary";));
my $fh = $msg->open;
print $fh "--$boundary\n";
if(defined($body)) {
print $fh "Content-Type: text/plain; charset=iso-8859-1;\n";
print $fh "Content-Transfer-Encoding: quoted-printable;\n";
print $fh "This is the body content : ".$body;
print $fh $body;
print $fh "--$boundary\n";
}
if(defined($filename) && defined($type) && defined($data)) {
print $fh "Content-Disposition: attachment; filename=$filename;\n";
print $fh "Content-Type: $type; name=$filename; charset=iso-8859-1;\n";
print $fh "Content-Transfer-Encoding: 8bit;\n\n";
print $fh "--$boundary\n";
}
$fh->close or LOGDIE "couldn't send email: $!\n";
答案 0 :(得分:1)
主要的缺陷是,当您检查$ data时,在编写MIME-Header后不会添加$ data,例如在最终边界丢失之前的“打印$ fh $ data”。但是还有更多的缺陷:
除非你真的知道MIME是如何工作的(似乎并非如此),否则使用MIME :: Lite或MIME :: Tools来处理所有这些细节要容易得多。