2013-01-19 59 views
1

我試圖將電子郵件保存到數據庫,稍後通過rake任務發送。在rails 2.3.8(TMail)中很容易,但我在rails 3.2中遇到了問題。Rails 3.2序列化和反序列化郵件

一旦我得到郵件對象(郵件),我就調用mail.encoded來序列化郵件。我將它保存到數據庫中。

我的耙子任務加載編碼的消息,但我找不到重新創建郵件對象並調用傳遞(反序列化)的方法。

Mail.new(mail.encoded)似乎應該可以工作,但傳遞失敗,因爲Mail.new沒有得到默認的ActionMailer SMTP設置。

其他人在做這樣的事情嗎?

謝謝!

+0

我發現了這個。 http://stackoverflow.com/questions/13264424/how-to-serialize-and-deserialise-mailers,但他們仍然有Mail.new問題沒有拿起SMTP設置。 – arons

回答

2

好吧,得到了這個工作。

要序列化電子郵件,我執行以下操作。

email = mail(:to => '[email protected]', ....) 
string = mail.encoded 

# later one 

mail.new(email.string) 
Mail.deliver(mail) 

這似乎跳過任何HTML驗證。

我無法設置郵件發送設置(SMTP等),但我認爲它默認爲:sendmail,並且在Web服務器上工作。

+0

爲了使smtp設置在傳遞郵件之前添加'ActionMailer :: Base.wrap_delivery_behavior(mail)' – snovity