1

我有一台生产机器,它是您在 Amazon AWS 上的基本 CentOS 机器,没有什么特别之处。

我基本上是在运行这个:

@digest = WeeklyDigest.most_recent.first
@mailer = DigestMailer.weekly_digest(@digest)
@mailchimp = MailChimp.new
@mailchimp.new_digest(@mailer.body.to_s)

这段代码的作用是找到我最新的每周摘要,使用它生成一个新的邮件程序,然后我从中获取 html 并将其发送到 mailchimp。

我在 app/views/digest_mailer 中有一个 week_digest.html.slim,在 app/views/layouts 中有一个 digest_mailer.html.slim。

所有这些都适用于开发。@mailer 返回:

#<Mail::Message:70180219750380, Multipart: false, Headers: <From: no-reply@example.com>, <To: fake@fake.com>, <Subject: Weekly Digest>, <Mime-Version: 1.0>, <Content-Type: text/html>>

当我在我的 AWS 机器上运行完全相同的代码时,它会返回:

#<Mail::Message:158221880, Multipart: false, Headers: <From: no-reply@example.com>, <To: fake@fake.com>, <Subject: Weekly Digest>, <Mime-Version: 1.0>, <Content-Type: text/plain>>

dev 上的内容类型是 html,prod 上是 text/plain。

关于为什么会发生这种情况的任何想法?环境设置中的东西?我在文档中没有发现太多帮助。

4

1 回答 1

3

您的环境配置之间的 default_content_type 可能存在差异。尝试添加:

config.action_mailer.default_content_type = 'text/html'

到你的production.rb配置文件,或者你的application.rb配置文件。

您还应该检查文本模板是否存在app/views/digest_mailer/weekly_digest.text.erb并将其删除,因为您只是尝试发送 HTML 电子邮件。

从长远来看,您应该考虑发送包含文本和 HTML 的多部分电子邮件。Premailer Gem通过自动从 HTML 模板生成文本部分,让这一切变得非常简单。这样您就不必同时维护文本和 HTML 模板并使它们保持同步。

于 2013-05-21T01:02:21.793 回答