09/23/13

SMTP方式发送邮件时标题乱码问题

关于 headers 中 subject 的乱码:

不要把非 iso-8859-1 编码的文字直接放进 subject,正确的方式是让 subject 里头的文字符合 RFC 2047 的规范。

假设你的 subject 处的文字的编码是 GB2312,那么正确的 subject 应该是这样的格式 $headers['subject'] = ‘=?GB2312?B?’ . base64_encode(‘标题文字’) . ‘?=’;如果是 UTF-8 的话,把上面开头的 GB2312 替换成 UTF-8 即可。

推荐在标题处使用 GB2312 编码,因为 MTA 的分化实在是严重,大部分的 MSP 使用的都是自己开发的 MTA,而相信国内的大部分 MTA 无论如何都是可以支持 GB2312 编码的。

优点:可靠性强,稳定

缺点:代码较多,邮箱的账号密码必须使用明文存于本站中,不安全因素增加,需要在自己的邮箱配置开启smtp服务。