1

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

この問題を引き起こす可能性のあるアイデアはありますか?

どうもありがとう

4

0 に答える 0