1

Amazon 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 であり、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 に答える