跳到主要內容

利用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的驅動程式,剩下的就是政府單位的網頁和程式應該改版了吧!!!

DBeaver 介面語言

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

如何將較高版本SQL Server複製到低版本SQL Server (降級為舊版)並保留權限及資料庫圖表

一般若是要將SQL Server裡的Database轉往其他Server時,最簡單的方式就是備份(Backup)後再還原(Restore),或者是䣃離(detach)後附加(attach)。 但是很不幸地,若是由較低版本(e.g. 2008)到較高版本(e.g. 2012)要怎麼辦呢?