Ответ 1
Вероятно, у вас есть две версии шаблонов электронной почты (text.erb
и html.erb
).
Если это так, вы можете использовать email.text_part.body.to_s
для текстового сообщения электронной почты и email.html_part.body.to_s
для версии HTML.
У меня есть класс actionmailer и связанные с ним служебные данные, он отлично работает. Тем не менее, в моем unit test (минимальный минимальный размер rails) тело электронной почты пуст. Почему это?
мой класс почтовой программы:
class TermsMailer < ApplicationMailer
default from: "[email protected]"
def notice_email(user,filename)
@user = user
@file = filename
mail(to: "[email protected]", subject: 'Data downloaded')
end
end
мой тест:
require 'test_helper'
class TermsMailerTest < ActionMailer::TestCase
test "notice" do
email = TermsMailer.notice_email(users(:me),'file.ext').deliver_now
assert_not ActionMailer::Base.deliveries.empty?
assert_equal ['[email protected]'], email.from
assert_equal ['[email protected]'], email.to
assert_equal 'Data downloaded', email.subject
assert_equal 'arbitrary garbage for comparison', email.body.to_s
end
end
Представления для этой почтовой программы не пустые, и правильное содержимое фактически отправляется в сообщениях электронной почты. Итак, почему тело электронной почты пустое в моем тесте?
Вероятно, у вас есть две версии шаблонов электронной почты (text.erb
и html.erb
).
Если это так, вы можете использовать email.text_part.body.to_s
для текстового сообщения электронной почты и email.html_part.body.to_s
для версии HTML.