使用了PHPMailer發送郵件的朋友帶中文附件名時會出現亂碼,下面我來介紹一個解決辦法,比如我們要發送的附件是“測試.txt”,如果在添加附件的時候強制使用指定文件名的方式:
$mail->AddAttachment($attach, $attach);
那么發送過去的附件文件名將會是亂碼,如果不指定:
$mail->AddAttachment($attach, $attach);
那么發送過去的文件名中的中文干脆沒了,成了“.txt”。
解決辦法:如果想設置文件名為中文,則在調用AddAttachment時提供中文的name參數(第二個參數),比如代碼如下:
$mail->AddAttachment(‘temp/2011/test.rar’, ‘測試.rar’);
其它問題:發送中文郵件的時候,中文會出現亂碼,我看了一下源碼,亂碼的產生大概是在將郵件標題轉成幾個小的=?utf-8?B?...?=時,可能是無意中把中文給截斷了產生的,所以我的修改更簡單而又略微溫柔一點,修改第1185行:
$maxlen = 75 - 7 - strlen($this->CharSet);改成:
$maxlen = 75000 - 7 - strlen($this->CharSet);