2013-03-06 24 views
0

我正在使用Observer來記錄傳出的電子郵件;它會正確啓動,但是當我嘗試提取電子郵件的正文時,我得到一個空字符串。電子郵件絕對不是空白的,並且記錄記錄是肯定創建的。突變和檢查message.body確認它是一個空字符串。ActionMailer Observer中的Message.body爲空

class MailObserver 
    def self.delivered_email(message) 
    for address in message.to 
     user = User.find_by_email(address) 
     if user 
     UserMailerLogging.create!(user_id: user.id, email_type: message.subject, 
            contents: message.body, sent_at: Time.now) 
     end 
    end 
    end 
end 

ActionMailer::Base.register_observer(MailObserver) 

回答

2

在Rails 3中,電子郵件是使用Mail創建併發送的。根據他們的文檔

message.text_part # plaintext version 
message.html_part # html version 

您還可以進一步取決於您的電子郵件是多部分或沒有。

message.text_part.body.decoded 

這個問題在SO這個問題也可能是hefpful。