如何使用ActionMailer获取电子邮件正文

Dra*_*kic 10 email ruby-on-rails actionmailer

我正在发送一个像这样的Rails标准电子邮件

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

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

@mail.body
@mail.body.raw_source
@mail.body.encoded
Run Code Online (Sandbox Code Playgroud)

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

更新

我看到的ERB和Haml是一个HTML注释,这就是为什么在日志中它看起来像ERB而不是渲染的tempalte.所以@ mail.body.encoded工作得很好.

Shi*_*iko 15

我尝试了接受的答案,但它显示了HEADER和HTML.要获取HTML标记,我使用了下面的代码:

@mail.html_part.body.decoded
Run Code Online (Sandbox Code Playgroud)

  • 这比接受的答案要好.首先,它展示了如何使用`html_part`(和`text_part`)来获得一个或另一个.其次它显示`decode`而不是`encoded`.如果你用日语发送电子邮件,`encoded`给你Base 64乱码,但`decode`让你编写与日文文本匹配的测试. (3认同)

TK-*_*421 10

怎么样@mail.body.encoded(哪个应该给你你寻求的结果)?