2013-05-21 19 views
0

我有一台生产机器,它是您在亚马逊AWS上的基本CentOS机器,没有什么特别的。Rails 3.2 ActionMailer在生产中不呈现html

我基本上运行以下命令:

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

这段代码的作用是发现我的最新weekly_digest,使用生成一个新的邮件,然后我抓住从HTML和发送到mailchimp。

我在应用程序/视图/ digest_mailer一个weekly_digest.html.slim和我在应用程序/视图/布局一个digest_mailer.html.slim。

所有这些在开发中都能正常工作。 @mailer返回此:

#<Mail::Message:70180219750380, Multipart: false, Headers: <From: [email protected]>, <To: [email protected]>, <Subject: Weekly Digest>, <Mime-Version: 1.0>, <Content-Type: text/html>> 

当我将AWS的机器上运行完全相同的代码返回:

#<Mail::Message:158221880, Multipart: false, Headers: <From: [email protected]>, <To: [email protected]>, <Subject: Weekly Digest>, <Mime-Version: 1.0>, <Content-Type: text/plain>> 

上开发的内容类型是HTML和文本/ PROD上平原。

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

回答

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模板中的文本部分,可以非常容易地实现这一点。这样您就不必同时维护文本和HTML模板并保持同步。

+0

我向environment.rb文件添加了ActionMailer :: Base.default:content_type =>“text/html”,但邮件的.body正在返回''。这是一个不同的问题,但你有什么想法,为什么这可能是?它会返回一个关于开发的整个html文档。这可能是因为我使用苗条而不是erb吗? – goddamnyouryan

+0

确实很难说。您使用Mailchimp的方式与通过Rails发送邮件的典型方式有所不同,这使得调试起来更加困难。我建议做一个测试,使用基本的Gmail帐户和'DigestMailer.weekly_digest(@digest).deliver'从CentOS服务器发送电子邮件来触发发送。如果这样做你知道问题是与Mailchimp发送策略。如果不是,它是与您的模板的东西。无论哪种方式,它都会告诉你需要挖掘哪些部分。 – jshkol

+0

以及我没有任何stmp设置,但是当我.deliver它似乎“交付”没有问题。 Hmmmmmmm。多烦人。 – goddamnyouryan

相关问题