1

我正在尝试部署一个在 1.3.7 中创建的应用程序,该应用程序从桌面应用程序接收通知,并且根据用户的语言,将发送特定语言的“谢谢”电子邮件。电子邮件是使用 javamail MimeMessageHelper 从模板创建的,如下所示:

 MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
 helper.setFrom(new InternetAddress(config.td.mail.from.email,config.td.mail.from.text))
 helper.setTo((mailDetails.to) as String)
 helper.setSubject(config.td.mail.from.regSubject)
 helper.setText(buildRegBody(mailTemplate, mailDetails), true)

实际的 mailTemplate 文件都以 UTF-8 编码。在本地运行应用程序时,发送的电子邮件没有任何错误,但在部署到 Tomcat 时,电子邮件文本中的任何国际字符都将替换为:������。在使用正确的 UTF-8 排序规则将国际字符写入 MySQL 数据库时,我遇到了类似的问题。

我的配置文件包括以下行:

grails.views.default.codec = "none"
grails.views.gsp.encoding = "UTF-8"
grails.converters.encoding = "UTF-8"

我尝试了以下方法无济于事:

  • 向 Tomcat 服务器 xml 中的连接器元素添加了 UTF-8 编码语句
  • 确保 charEncodingFilter 在 web.xml 的链中排在第一位
  • 使用参数创建了我的生产战争:'-Dfile.encoding=UTF-8 war'

这些似乎解决了大多数其他用户的问题,现在我已经没有想法了 - 任何帮助或建议将不胜感激。

4

1 回答 1

2

“buildRegBody 是做什么的?你能发布代码吗?” Sergio,这是一种从模板构建电子邮件正文的小方法。

Loteq,谢谢你的建议。我确实对所有文件进行了正确编码,并且将 Tomcat 设置为将文件编码为 UTF-8。问题在于运行 Tomcat 的 JAVA。通过添加解决:

-Dfile.encoding=UTF-8

到 Catalina.sh 的“JAVA OPTS”或 /etc/init.d/Tomcat 脚本(取决于您的环境)以及在 Tomcat 服务器 xml 的连接器元素中设置编码语句(见上文)。我希望这可以避免其他人引起我的头痛!

于 2012-10-09T09:11:17.553 回答