2017-10-05 48 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