跳到主要內容

利用MailMessage 寄信時,主旨過長時在 Thunderbird和Mail.app會亂碼的問題

最近在寫某個簡單的小程式時,因為有寄發提醒郵件的需求,就利用MaiMessage寫了一個簡單的寄信程式,測試都很正常,但是到了ThunderbirdMail.app卻分別出現了截斷與亂碼的問題。


圖:在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?=
 =?utf-8?B?uro=?
原來是主旨被MaiMessage切成二段,ThunderbirdMail.app無法解讀。


利用股溝搜尋一下,發現保哥曾經遇到MailMessage發Big5編碼的問題,但是我是以UTF-8寄,應該不一樣,後來發現璉大有遇到類似的Header問題,他用自己寫的class解決,於是我參考這裏的做法,將Subject自行編碼就搞定了。

mailMessage.Subject = string.Format(@"=?UTF-8?B?{0}?=", Convert.ToBase64String(Encoding.UTF8.GetBytes(subject)));

圖:在Thunderbird完全正常了

留言

這個網誌中的熱門文章

自然人憑證讀卡機驅動程式

鳥毅用的是第一代的自然人憑證讀卡機,EZ100PU(後來有同事買EZmini可以讀SIM卡似乎更好),每年報稅時用一次。 本來只是要申請些政府業務,一時之間找不到光碟,沒想到在 驅動程式下載 居然看到Linux和Mac的驅動程式,剩下的就是政府單位的網頁和程式應該改版了吧!!!

在Windows Server設定L2TP over IPSec VPN

簡單地說,macOS Sierra與iOS 10發表後,大家忽然發現Apple不再支援PPTP,所以一定得設定其他的VPN型態。若不要另外裝client,用L2TP是最方便的,SSL VPN雖然好,但若沒有安裝Agent要連線到任一電腦或是非網頁服務還是挺麻煩的。

DBeaver 介面語言

DBeaver是我個人頗常用的一套跨平台Database管理工具,最近升級後發現Windows版本居然變成簡體中文,而且無法切換為英文。