最近在寫某個簡單的小程式時,因為有寄發提醒郵件的需求,就利用MaiMessage寫了一個簡單的寄信程式,測試都很正常,但是到了Thunderbird和Mail.app卻分別出現了截斷與亂碼的問題。
所以要看原始內容到底發生什麼事,原來在13個UTF-8字元時主旨是編碼成
利用股溝搜尋一下,發現保哥曾經遇到MailMessage發Big5編碼的問題,但是我是以UTF-8寄,應該不一樣,後來發現璉大有遇到類似的Header問題,他用自己寫的class解決,於是我參考這裏的做法,將Subject自行編碼就搞定了。
圖:在Thunderbird下的情況
圖:在Mail.app下的情況
圖:在Windows Live Mail則是完全正常
所以要看原始內容到底發生什麼事,原來在13個UTF-8字元時主旨是編碼成
Subject: =?utf-8?B?6KGM5LqL5puG5o+Q6YaS77ya57mz5L+d6Zqq6LK7ICjlgIs=?=但是到了14個UTF-8字元時卻變成
Subject: =?utf-8?B?6KGM5LqL5puG5o+Q6YaS77ya57mz5L+d6Zqq6LK7ICjlgIvk?=原來是主旨被MaiMessage切成二段,Thunderbird和Mail.app無法解讀。
=?utf-8?B?uro=?
mailMessage.Subject = string.Format(@"=?UTF-8?B?{0}?=", Convert.ToBase64String(Encoding.UTF8.GetBytes(subject)));
圖:在Thunderbird完全正常了
留言