Message.body在ActionMailer Observer中为空 [英] Message.body empty in ActionMailer Observer

查看:120
本文介绍了Message.body在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆