在Rails 4.2和5.0中,我的Mailer中的这段代码非常适合发送不带模板文件的多部分电子邮件(整个电子邮件正文都已传入):
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
错误。
5.1的ActionMailer Guide表示要在body:
方法中使用mail()
参数,以便在没有模板的情况下发送电子邮件。 Sending Multipart Emails部分说:“如果您对同一操作使用不同的模板,则Action Mailer将自动发送多部分电子邮件。”
那么您怎么同时做这两个呢?也就是说,当同时存在html和纯文本部分时,如何构造mail(to: recipient, from: from, subject: subject, body: email_body)
的email_body部分?
更新:
我可以通过将变量更改为@html_body和@text_body并添加仅显示以下内容的模板文件来解决此问题:
<%= @html_body %>
和<%= @text_body %>
。