ActionMailer Observer中的Message.body为空

我正在使用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) 

在Rails 3中,使用Mail gem构建和发送电子邮件 。 根据他们的文档

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

您还可以进一步了解,具体取决于您的电子邮件是否为多部分。

 message.text_part.body.decoded 

这里关于SO的这个问题也可能是有害的。