郵件標題亂碼問題解決一例


最近有用戶反饋在mac下通過airmail、outlook這樣的郵件客戶端查看系統發出郵件的標題顯示為亂碼,但是windows下正常。

通過郵件客戶端保存為eml,用sublime text 2打開,可以發現展示為以下效果:

Date: Wed, 01 Jul 2015 19:54:57 +0800
From: <此處省略>
To: "=?GBK?B?zt6+zA==?=" <此處省略>
Subject: [MTLÑз¢Ö§³Å] ÏîĿ״̬֪ͨ
X-Mailer: smtp-cli 3.6, see http://smtp-cli.logix.cz
Message-Id: 1435751697-132512@smtp-cli

Subject直接傳入了中文內容,不符合郵件MIME規范。windows顯示正常,不過是因為系統本身良好的兼容性而已。

想要編碼相應的文字,只需要按照以下格式:

=?charset?encoding?encoded text?=

encoding有兩個可選值:Q和B,前者表示QP編碼(Quoted-printable),后者為BASE64編碼。

我們選擇BASE64作為編碼方案,處理一下Subject:

private String encodeSubject(String subject) {
        byte[] base64 = org.apache.commons.codec.binary.Base64.encodeBase64(subject.getBytes());
        return String.format("=?UTF-8?B?%s?=", new String(base64));
    }

經過這么處理,發送出去的郵件中的Subject不再是中文,亂碼問題也就隨之解決。

 

[參考資料]

https://en.wikipedia.org/wiki/MIME

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM