Я использую SendGrid SMTP API в моем приложении Rails для отправки электронных писем. Однако у меня возникают проблемы с тестированием заголовка электронной почты ("X -SMTPAPI ") с использованием RSpec.
Вот как выглядит электронное письмо (получено из ActionMailer :: Base.deliveries):
#,
>,
,
>,
, ,
, ,
>
Вот мой код спецификации (который не удался):
ActionMailer::Base.deliveries.last.to.should include("foo@bar.com")
Я также пробовал различные методы для получить заголовок ("X-SMTPAPI") и тоже не сработало:
mail = ActionMailer::Base.deliveries.last
mail.headers("X-SMTPAPI") #NoMethodError: undefined method `each_pair' for "X-SMTPAPI":String
Справка?
Оказывается, я могу сделать это, чтобы получить значение заголовка электронного письма:
mail.header['X-SMTPAPI'].value
Однако возвращаемое значение находится в формате JSON. Затем все, что мне нужно сделать, это его декодировать:
sendgrid_header = ActiveSupport::JSON.decode(mail.header['X-SMTPAPI'].value)
, который возвращает хеш, где я могу сделать это:
sendgrid_header["to"]
, чтобы получить массив адресов электронной почты.
]