在 Heroku 托管的 Play Framework 2 应用程序上通过 Mandrill 对电子邮件进行错误的内容传输编码。在本地工作
Posted
技术标签:
【中文标题】在 Heroku 托管的 Play Framework 2 应用程序上通过 Mandrill 对电子邮件进行错误的内容传输编码。在本地工作【英文标题】:Wrong content-transfer-encoding for e-mails via Mandrill on a Heroku hosted Play Framework 2 app. Works locally 【发布时间】:2014-01-15 04:31:34 【问题描述】:我正在使用 Heroku 托管一个用 Play Framework 2.2.x (Java) 编写的应用程序。此外,我正在使用 Mailchimp 的 Mandrill 来自动发送电子邮件。
在我的本地环境中,我可以通过 Mandrill 发送电子邮件,一切看起来都很好。根据 GMail,电子邮件具有以下编码:
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
但是,当部署到 Heroku 并执行相同操作时,电子邮件看起来是乱码。根据 GMail,电子邮件现在具有以下编码:
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Heroku 上的网站本身看起来不错,并且可以毫无问题地以 UTF8 显示奇异字符。
我应该提到我正在使用模板和play-easymail
(https://github.com/joscha/play-easymail/) 来生成电子邮件:也就是说,我用字符串views.html.emails.myEmailTemplate.render().toString()
填充电子邮件的正文。
【问题讨论】:
【参考方案1】:这已在别处得到答复:
https://groups.google.com/d/msg/play-framework/Fdr_Fjfbstg/cvbsJNq-SO0J
基本的解决方案是从命令行为您的应用程序在 JAVA_OPT 中设置 UTF8 编码:
heroku config:add JAVA_OPTS="-Dfile.encoding=UTF8"
【讨论】:
以上是关于在 Heroku 托管的 Play Framework 2 应用程序上通过 Mandrill 对电子邮件进行错误的内容传输编码。在本地工作的主要内容,如果未能解决你的问题,请参考以下文章
无法在 heroku 上使用 ClearDB 运行 Play Framework 1.2.4 应用程序
heroku 部署与 play framework 1.2.4 和自己的安全模块