在 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 上播放音乐,但在本地

无法在 heroku 上使用 ClearDB 运行 Play Framework 1.2.4 应用程序

heroku 部署与 play framework 1.2.4 和自己的安全模块

scala play 应用程序的 Heroku procfile

为啥我托管在 heroku 上的不和谐机器人随机关闭?

如何在heroku中托管一个不和谐的机器人(错误)