Rails 3.2.13 で、ActionMailer、AWS SES、および添付ファイル (インラインではない) で問題が発生しています。Gmail でメールを表示すると、問題なく表示されます。Apple Mail または Sparrow で表示すると、添付ファイルが欠落して本文が表示されるか、その逆です。
メールのヘッダーは次のとおりです。
Return-Path: 0000013e79305031-08aae59a-f7a0-41c9-8bd9-076c46caf100-000000@amazonses.com
Date: Mon, 6 May 2013 09:33:29 +0000
From: Test Account <test@test.com>
To: test@localhost.com
Message-ID: <0000013e79305031-46caf100-000000@email.amazonses.com>
Subject: TEST
Mime-Version: 1.0
Content-Type: multipart/alternative;
boundary="--==_mimepart_518778e85f16a_56844ceff0898ed";
charset=UTF-8
Content-Transfer-Encoding: 7bit
X-SES-Outgoing: 129.255.144.108
本文が表示されている場合、添付ファイルはソースの最後にあります:
----==_mimepart_518778e85f16a_56844ceff0898ed
Date: Mon, 06 May 2013 09:33:28 +0000
Mime-Version: 1.0
Content-Type: application/pdf;
charset=UTF-8;
filename="Test.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="Test.pdf"
Content-ID: <518778e829b75_56844ceff089553@ip-10-36-149-153.mail>
...
スタック オーバーフローで同様のエラーが見つかりました ( ActionMailer を使用してマルチパート メールを送信する際の問題) が、提案された解決策は機能しませんでした。 com/a/16334096/1016269 )。AWS から、開始境界が設定されていないというエラーが表示されます。明示的に設定しようとしましたが、今のところうまくいきません。
これは、メールを送信するために使用する元のコードです。
def test_email
attachments["Test.pdf"] = File.read(Rails.root.join("data", "test.pdf"))
mail(to: recipient, subject: "Test Email")
end
これは、私が投稿したリンクで提案されたソリューションに基づくコードです。
def test_email
mixed = mail(to: recipient, subject: "Test Email")
mixed.add_part(
Mail::Part.new do
content_type 'multipart/alternative'
# THE ODD BIT vv
mixed.parts.reverse!.delete_if {|p| add_part p }
end
)
mixed.content_type 'multipart/mixed'
mixed.header['content-type'].parameters[:boundary] = mixed.body.boundary
attachments["Test.pdf"] = File.read(Rails.root.join("data", "test.pdf"))
end
応答は次のとおりです。
AWS::SES::ResponseError: InvalidParameterValue - Missing start boundary
この問題を引き起こす可能性のあるアイデアはありますか?
どうもありがとう