В Rails 4.2 и 5.0 этот код в моей почтовой программе хорошо работал для отправки электронной почты, состоящей из нескольких частей, без файлов шаблонов (передается все тело письма):
mail(to: recipient, from: from, subject: subject) do |format|
format.html { render html: html_body.html_safe } unless html_body.blank?
format.text { render text: text_body }
end
Однако в Rails 5.1это приводит к ошибке ActionView::MissingTemplate
.
В Руководстве по ActionMailer для 5.1 говорится об использовании параметра body:
в методе mail()
для отправки электронной почты без шаблона.А в разделе Отправка составных писем написано: «Action Mailer автоматически отправит составные письма, если у вас есть разные шаблоны для одного и того же действия».
Итак, как вы делаете оба?то есть, как вы создаете часть email_body в mail(to: recipient, from: from, subject: subject, body: email_body)
, когда есть и HTML, и текстовые части?
Обновление: Я могу обойти эту проблему, изменив переменные на @html_body и@text_body, и добавьте файлы шаблонов, которые просто говорят: <%= @html_body %>
и <%= @text_body %>
.