2017-02-17 223 views
0

我有一個java webapp部署在Windows Tomcat上,我已經做了所有的改變,將字符編碼設置爲UTF-8,它對所有的請求響應都正常工作。但問題是垃圾字符出現在使用webapp發送的電子郵件中。Tomcat編碼問題與電子郵件

需要做些什麼來解決問題?

代碼電子郵件服務:?

SimpleMailMessage msg = new SimpleMailMessage(); 
Map<String, Object> model = new HashMap<String, Object>(); 
model.put("userName", StringEscapeUtils.unescapeJava(StringEscapeUtils.unescapeHtml(name))); 
StringWriter writer = new StringWriter(); 
     VelocityEngineUtils.mergeTemplate(velocityEngine, "vm/messages/create_user.vm", "utf-8", model, writer); 
     msg.setText(writer.toString()); 
this.mailSender.send(msg); 

的郵件亂碼舉例:

喂P ajwal Thakare,

SIE erhalten diese automatische電子郵件,達SIE DAS ZurücksetzenIhres Passworts angefordert haben。

這裏P + ajwal應在郵件已Pʁajwal

+0

你是如何創建你的電子郵件?顯示你的代碼,以便我們*可以*幫助你弄清楚發生了什麼問題。 – Andreas

+0

@ tak3shi作家正在通過VelocityTemplate mergetemplate方法得到更新 –

+0

@ tak3shi更新了與例 –

回答

0

更換SimpleMailMessage用的MimeMessage。現在您可以設置UTF-8字符集。

MimeMessage msg = mailSender.createMimeMessage(); 

msg.addRecipient(RecipientType.TO, new InternetAddress(adminEmail)); 
msg.addFrom(new InternetAddress[] { new InternetAddress(adminEmail) }); 

msg.setSubject(subject, "UTF-8"); 
msg.setText(message, "UTF-8"); 
mailSender.send(msg); 

欲瞭解更多信息,請參閱here

+0

的問題,嘗試,以及同樣的問題 –