ExtMail 列表邮件名乱码
用 php 程序通过 smtp 发邮件,发现使用 ExtMail 列表中文邮件时邮件名是乱码,而且邮件被 Amavisd-new 打上了垃圾邮件的标签,且在邮件头中有以下提示:
X-Amavis-Alert: BAD HEADER Non-encoded 8-bit data
而在其它邮件系统中显示是正常的,在 Foxmail 中也是正常的。
对比接收到的正常邮件,发现邮件名是 base64 编码了的,于是在发送邮件时进行编码:
$subject = "=?GB2312?B?".base64_encode($subject)."?=";
这时候邮件不被标记为垃圾邮件了,但是邮件名列表时还是乱码。仔细对比后发现,是程序中 Subject: 后少了个空格。
看来,程序书写不够仔细;ExtMail 提取非规范书写的 Subject 内容时有点问题。