繁体   English   中英

将邮件消息附加到 Rails 中的邮件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM