如下图所示,发送邮件无论是标题还是内容,带中文的话会显示成乱码。
而通过搜索,告知可以使用如下设置编码。
1 |
$mail->Charset='UTF-8'; |
但实际上,只要鼠标右键这个Charset,查看定义,就会收到提示未找到任何定义。
所以,这个方法已经被弃用了。
新方法
其实只要知道大概的方向,我们可以自行摸索。
打开PHPMailer.php文件,在顶部就定义了编码:
1 2 3 |
const CHARSET_ASCII = 'us-ascii'; const CHARSET_ISO88591 = 'iso-8859-1'; const CHARSET_UTF8 = 'utf-8'; |
也就是说已经有了utf-8编码,只要对应使用即可。
怎么使用
找到源码中的第77行(可能有差异,自行检索具体行数),修改为如下。
1 |
public $CharSet = self::CHARSET_UTF8; |
第1200行,修改为如下。
1 |
public static function parseAddresses($addrstr, $useimap = true, $charset = self::CHARSET_UTF8) |
保存,重新发送邮件。
如下图所示,就能正确的显示中文了。
原创文章,作者:蓝洛水深,如若转载,请注明出处:https://blog.lanluo.cn/11611