2014-12-13 32 views
4

我發送電子郵件標準使用Rails這樣如何獲得電子郵件正文用的ActionMailer

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

現在我需要從電子郵件得到的消息體(或HTML在這種情況下)。我嘗試了以下方法,但它不起作用,因爲它不返回呈現的電子郵件,而是模板(包括ERB和Haml)。

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

這樣做似乎令人驚訝地困難。我需要一個人在接收郵件時看到的結果。

更新

僱員再培訓局和Haml的我看到的是一個HTML註釋,這就是爲什麼在日誌中它看起來像它記錄的ERB,而不是渲染tempalte。所以@ mail.body.encoded工作正常。

+0

如果你只是想看看電子郵件的主體,我想你可以使用像[開信刀(HTTPS寶石:// github.com/ryanb/letter_opener)。 – 2014-12-13 20:11:51

回答

8

@mail.body.encoded(它應該給你你想要的結果)?

+0

這仍然返回ERB和HAML而不是呈現的電子郵件。就像「」<! - %h1 = event_banner_text(@site)「 – 2014-12-16 18:51:07

+0

這是正確的答案,我的錯誤 – 2014-12-24 17:17:12

+0

@ TK-421有沒有辦法讓HTML內容只有沒有頭?我可以寫幾個如果一個屬性存在,它將會更清潔 – Shiko 2017-04-26 08:24:37

5

我試過接受的答案,但它顯示了HEADER和HTML。爲了獲得HTML標籤只有我用下面的代碼:

@mail.html_part.body.decoded 
+1

這比接受的答案要好,首先它顯示瞭如何使用'html_part'(和'text_part')來獲取一個或另一個。 'encoded'而不是'encoded'如果你使用日語發送電子郵件,'encoded'會給你Base 64亂碼,但是'encoded'可以讓你編寫與日文文本匹配的測試。 – 2018-02-15 16:48:42

相關問題