我有一台生产机器,它是亚马逊AWS上的基本CentOS机器,没什么特别的。
我基本上是这样运行的:
@digest = WeeklyDigest.most_recent.first
@mailer = DigestMailer.weekly_digest(@digest)
@mailchimp = MailChimp.new
@mailchimp.new_digest(@mailer.body.to_s)
这段代码的作用是找到我最新的weekly_digest,使用它生成一个新邮件,然后我从中获取html并将其发送到mailchimp。
我在app / views / digest_mailer中有一个weekly_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,其文本/ plain为prod。
有关为何会发生这种情况的任何想法?环境设置中的东西?我在文档中找不到太多帮助。
答案 0 :(得分:2)
您的环境配置之间的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的多部分电子邮件。通过从HTML模板自动生成文本部分, Premailer Gem 可以非常轻松。这样,您就不必同时维护文本和HTML模板并使它们保持同步。