2017-10-05 18 views
1

にメールするメールメッセージを添付し、私は電子メールにメールオブジェクトを添付したい:Railsの5.1 actionmailerのではRailsの

def attach_mail(original_email) 
    attachments['original-email.eml'] = { mime_type: 'message/rfc822', encoding: '7bit', content: original_email.to_s } 
    mail to: 'postmaster', subject: 'mail should be attached' 
end 

しかし、これは有効な電子メールを生成しません。 Thunderbirdはサイズ '0'の添付ファイルを一覧表示します。 Hordeは正しいサイズの添付ファイルを一覧表示しますが、電子メールとして認識しません。電子メールの添付ファイルを電子メールで

attachments['original-email.eml'] = original_email 
attachments['original-email.eml'] = { content: original_email.to_s } 
attachments['original-email.eml'] = { mime_type: 'message/rfc822', content: original_email.to_s } 

が、これらの結果はいずれも:

私はattachmentsラインのバリエーションを試してみました。

解決策は何ですか?

答えて

1

最後にそれを分かりました。

actionmailerのメッセージに電子メール(「メール」宝石からのメールオブジェクト)を添付するには、あなたがそうのようなMIMEタイプとエンコーディングを指定する必要があります。

def attach_mail(original_email) 
    attachments['original-email.eml'] = { mime_type: 'message/rfc822', 
    encoding: '7bit', 
    content: original_email.to_s } 
    mail to: 'postmaster', subject: 'mail should be attached' 
end 

これが適切であるmultipart/mixedメッセージを作成し、 MUAで表示されます。

ただし、インラインアタッチメントを追加した場合(たとえば、ActionMailer電子メール本体にロゴ画像を表示する場合)、メッセージ全体にmultipart/relatedのMIMEタイプが付きます。私が試したMUAは、multipart/relatedメッセージを電子メールの添付ファイルで解釈できませんでした。

したがって、電子メールに電子メールを添付するときは、インライン添付ファイルを追加しないでください。

+0

ありがとうございました。 なぜメールメッセージが文字化けしているのかわかりませんでした。 – neongrau

+0

さらに、emlファイルが添付されたhtml本文のみを持つメールで問題が発生しました。そこに添付ファイルが配信時にメール全体を歪曲させました。不思議なことに、Mailオブジェクトをエンコードされたメソッドを介して.emlファイル自体に変換していたが、それは動作していた。最後に、mime_type: 'application/octet-stream'、エンコーディング: '7bit'というeml-attachmentsを送信しています。これは私のさまざまなフォーマットに最適です。少なくとも私が次の奇妙な組み合わせにつまずいて、それが1つまたは別のMUAで失敗するまで – neongrau

関連する問題