2014-12-13 3 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 

Удивительно сложно сделать это. Мне нужен результат, который люди видят при получении электронной почты.

Update

ИБКН и Haml я видел, был HTML комментарий, поэтому в журналах он выглядел как он вошел Еврорадио вместо отрисованной tempalte. Так что @ mail.body.encoded работает нормально.

+0

Если вы просто хотите, чтобы взглянуть на тело письма, я думаю, вы могли бы использовать камни как [письмо открывалка] (https: // github.com/ryanb/letter_opener). –

ответ

8

Как насчет @mail.body.encoded (что должно дать вам результат, за который вы ищете)?

+0

Это все еще возвращает ERB и HAML вместо него. Как «"

+0

Это правильный ответ, моя ошибка. –

+0

@ TK-421 Есть ли способ получить содержимое HTML только без заголовка? Я могу написать несколько строки, чтобы сделать это, но если свойство существует, оно будет более чистым. – Shiko

5

Я пробовал принятый ответ, но он показывает HEADER вместе с HTML. Чтобы получить HTML-теги только Я использовал ниже код:

@mail.html_part.body.decoded 
+1

Это лучше, чем принятый ответ. Сначала он показывает, как использовать 'html_part' (и' text_part') для получения одного или другого. 'decoded' вместо' encoded'. Если вы отправляете электронные письма, скажем, на японский, «закодированный» дает вам бред Base 64, но «decoded» позволяет писать тесты, соответствующие японскому тексту. –

Смежные вопросы