[英]Attach mail message to mail in Rails
在 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”的附件。 Horde 列出了大小正确的附件,但无法将其识别为电子邮件。
我尝试了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 }
但这些都不会产生带有电子邮件附件的电子邮件。
解决办法是什么?
终于想通了。
要将电子邮件(来自“邮件”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
这将创建一个在 MUA 中正确显示的multipart/mixed
消息。
但是,如果您碰巧添加了任何内嵌附件(例如,在 ActionMailer 电子邮件正文中显示徽标图像),则整个邮件将具有multipart/related
MIME 类型。 我尝试过的 MUA 无法解释带有电子邮件附件的multipart/related
消息。
因此,在将电子邮件附加到电子邮件时不要添加任何内嵌附件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.