我正在尝试部署一个在 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"
我尝试了以下方法无济于事:
这些似乎解决了大多数其他用户的问题,现在我已经没有想法了 - 任何帮助或建议将不胜感激。
最佳答案
“buildRegBody 是做什么的?你能发布代码吗?” Sergio,这是一种从模板构建电子邮件正文的小方法。
Loteq,谢谢你的建议。我确实对所有文件进行了正确编码,并且将 Tomcat 设置为将文件编码为 UTF-8。
问题在于运行 Tomcat 的 JAVA。通过添加解决:
-Dfile.encoding=UTF-8
到 Catalina.sh 的“JAVA OPTS”或/etc/init.d/Tomcat 脚本(取决于您的环境)以及在 Tomcat 服务器 xml 的连接器元素中设置编码语句(见上文)。
我希望这可以避免其他人引起我的头痛!
关于部署在 Tomcat6 上时的 Grails 1.3.7 UTF-8 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12140362/