在Rails 5.1 ActionMailer中,我想将Mail对象附加到电子邮件中:
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”的附件。部落列出了正确尺寸的附件,但没有将其识别为电子邮件。
我尝试了attachments
行的变体:
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 }
但这些都不会导致带有电子邮件附件的电子邮件。
解决方案是什么?
答案 0 :(得分:1)
终于明白了。
要附加电子邮件(来自' mail' gem的邮件对象)到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
邮件。
因此,在将电子邮件附加到电子邮件时,请不要添加任何内联附件。