在PHP 5上使用PHPMailer的AddAttachment方法,似乎我无法让任何邮件客户端解码base64部分。
实际上,收到Thunderbird的电子邮件,而不是我附加的文件“asyF074.tmp”,我发现附有一个“Part1.2”文件,其中包含节标题(
name="asyF074.tmp"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="asyF074.tmp"
)后跟base64表示文件内容。
我无法弄清楚附件出了什么问题:
$filename = tempnam ( "" , "asy" );
$f = fopen($filename, "wb");
fwrite($f, $tbl, strlen($tbl));
fclose($f);
/*
* Send mail...
*/
$mail = new phpmailer();
$mail->IsSMTP();
$mail->From = "andrew@" . $domain;
$mail->FromName = "Andrew";
$mail->Host = $mail_host;
$mail->Port = $mail_port;
$mail->AddAddress($mail_destination);
$mail->IsHTML(true);
$mail->Subject = "2011 Polls";
$mail->Body = $msg;
$mail->AddAttachment($filename, "2011-Polls.xls", "quoted-printable", "application/vnd.ms-excel");
$mail->Send(); // send message
unlink($filename);
此外,即使我明确地将编码设置为“quoted-printable”,附件也始终以base64编码。
感谢。
答案 0 :(得分:0)
这可能不是你问题的答案,但我建议你从Zend_Framework尝试Zend_Mail我从来没有说过像这样的问题。
答案 1 :(得分:-1)
......找到了!我不知道为什么,但这是由于我使用的PHPMailer版本(我知道你在想什么:“这家伙吹了以前的下载”,但我可以向你保证我下载了正确的lib)。
我为PHP 5重新下载(2天后)same library,现在它正在运行。
没有时间检查,但库代码有问题。