我們的應用程序從Web表單獲取文本並通過電子郵件將其發送給適當的用戶。但是,當有人複製/粘貼臭名昭着的「聰明語錄」或Word中的其他特殊字符時,事情會變得多毛。MimeMessage中的智能引號在Outlook中無法正確顯示
在
用戶類型,他說「你好」給我,這難道不是很好嗎?
但是,當出現在Outlook 2003中的郵件,它出來是這樣的:
他打招呼meisnt那該多好?
的代碼,這是:
Session session = Session.getInstance(props, new MailAuthenticator());
Message msg = new MimeMessage(session);
//removed setting to/from addresses to simplify
msg.setSubject(subject);
msg.setText(text);
msg.setHeader("X-Mailer", MailSender.class.getName());
msg.setSentDate(new Date());
Transport.send(msg);
一個小小的研究之後,我想這可能是一個字符編碼的問題,並試圖東西搬到UTF-8。所以,我正是如此更新的代碼:
Session session = Session.getInstance(props, new MailAuthenticator());
MimeMessage msg = new MimeMessage(session);
//removed setting to/from addresses to simplify
msg.setHeader("X-Mailer", MailSender.class.getName());
msg.addHeader("Content-Type", "text/plain");
msg.addHeader("charset", "UTF-8");
msg.setSentDate(new Date());
Transport.send(msg);
這讓我更接近,但沒有雪茄:
他說,「helloÂ」到MEA-isnÂ't那該多好?
我無法想象這是一個不常見的問題 - 我錯過了什麼?
charset是一個Content-Type選項,不是一個單獨的頭文件。否則,它看起來不錯。 – Piskvor 2009-05-30 07:52:16