2017-10-05 50 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'的附件。部落列出正确大小的附件,但不认为它是电子邮件。

我已经试过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 } 

但这些结果的电子邮件与电子邮件附件。

有什么解决办法?

回答

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发送eml-attachments:'application/octet-stream',编码:'7bit',它似乎对我的各种格式最适用。至少直到我偶然发现下一个会在一个或另一个MUA中失败的奇怪组合 – neongrau