PHPMailer附件:邮件客户端无法解码

时间:2011-03-23 13:59:24

标签: php phpmailer

在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编码。

感谢。

2 个答案:

答案 0 :(得分:0)

这可能不是你问题的答案,但我建议你从Zend_Framework尝试Zend_Mail我从来没有说过像这样的问题。

答案 1 :(得分:-1)

......找到了!我不知道为什么,但这是由于我使用的PHPMailer版本(我知道你在想什么:“这家伙吹了以前的下载”,但我可以向你保证我下载了正确的lib)。

我为PHP 5重新下载(2天后)same library,现在它正在运行。

没有时间检查,但库代码有问题。