【问题标题】:How to get the email message body with ActionMailer如何使用 ActionMailer 获取电子邮件正文
【发布时间】:2015-02-12 06:38:22
【问题描述】:

我正在使用这样的 Rails 发送标准电子邮件

@mail = mail(to: registration.user.email, subject: "Registration Confirmation: #{@site.name}")

现在我需要从电子邮件中获取消息正文(或本例中的 html)。我尝试了以下方法,但它不起作用,因为它返回的不是呈现的电子邮件,而是模板(包括 ERB 和 Haml)。

@mail.body
@mail.body.raw_source
@mail.body.encoded

要做到这一点似乎非常困难。我需要一个人在收到电子邮件时看到的结果。

更新

我看到的 ERB 和 Haml 是一个 HTML 注释,这就是为什么在日志中它看起来像是记录了 ERB 而不是呈现的模板。所以@mail.body.encoded 工作正常。

【问题讨论】:

  • 如果您只是想查看电子邮件正文,我认为您可以使用 letter opener 之类的 gem。

标签: ruby-on-rails email actionmailer


【解决方案1】:

我尝试了接受的答案,但它显示了 HEADER 和 HTML。为了获得 HTML 标签 only 我使用了以下代码:

@mail.html_part.body.decoded

【讨论】:

  • 这比接受的答案要好。首先它展示了如何使用html_part(和text_part)来获取其中一个。其次它显示decoded 而不是encoded。如果您使用日语发送电子邮件,encoded 会为您提供 Base 64 乱码,但 decoded 允许您编写与日语文本匹配的测试。
【解决方案2】:

@mail.body.encoded 怎么样(它应该会给你想要的结果)?

【讨论】:

  • 这仍然会在其中返回 ERB 和 HAML,而不是呈现的电子邮件。喜欢 ""
猜你喜欢
  • 2020-07-04
  • 2014-10-03
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
  • 2013-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多