Message.body在ActionMailer Observer中为空 [英] Message.body empty in ActionMailer Observer
问题描述
我正在使用观察者记录外发电子邮件;它会正确触发,但是当我尝试提取电子邮件正文时,我得到一个空字符串。电子邮件绝对不是空白,并且肯定会创建日志记录。断点检查 message.body
确认它是一个空字符串。
class MailObserver
def self.delivered_email(message)
为message.to
用户中的地址= User.find_by_email(address)
如果用户
UserMailerLogging.create! (user_id:user.id,email_type:message.subject,
内容:message.body,sent_at:Time.now)
结束
结束
结束
结束
ActionMailer :: Base.register_observer(MailObserver)
在Rails 3中,使用 Mail gem构建和发送电子邮件。根据他们的文档
message.text_part#纯文本版本
message.html_part#html版本
根据您的电子邮件是否是多部分邮件,您还可以更进一步。
message.text_part.body.decoded
SO 上的这个问题可能也很有用。
I am using an Observer to log outgoing emails; it fires correctly but when I attempt to extract the body of the email I get an empty string. The emails are definitely not blank and the logging record is definitely created. Breakpointing and inspecting message.body
confirms that it is an empty string.
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)
In Rails 3, emails are built and sent using the Mail gem. According to their docs
message.text_part # plaintext version
message.html_part # html version
You can also go a bit further depending on whether your emails are multipart or not.
message.text_part.body.decoded
This question here on SO may also be hefpful.
这篇关于Message.body在ActionMailer Observer中为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!