2017-02-17 221 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

的问题,尝试,以及同样的问题 –