ActionMailer Rails:invitation_email.html.erb 文件未读取

Posted

技术标签:

【中文标题】ActionMailer Rails:invitation_email.html.erb 文件未读取【英文标题】:ActionMailer Rails : invitation_email.html.erb file not read 【发布时间】:2019-06-01 14:33:36 【问题描述】:

我在 Rails 上使用 Action Mailers。我遵循了文档,但我的浏览器无法正确读取invitation_email.html.erb。 这是invitation_email.html.erb上的代码:

<!DOCTYPE html>
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />

    </head>
  <body>
    <h1><%= @sender.first_name %> vous invite à débattre.</h1>
      <p><%= @group_invitation.key %></p>
      <p> Cliquez ici : <%= link_to "Rejoindre", group_accept_invite_url(:key => @group_invitation.key) %>
      </p>
      <div class="button-test">
        button
      </div>
    </body>
</html>

这是我在 group_mailer.rb 上的代码:

  class GroupMailer < ActionMailer::Base
  default from: 'Logora <contact@logora.fr>'
  layout 'mailer'

  def invitation_email(group_invitation)
    @to = group_invitation.guest
    @sender = group_invitation.sender
    @subject = @sender.first_name + ' vous invite à débattre sur Logora'
    @group_invitation = group_invitation
    m = mail(to: @to, subject: @subject, content_type: "text/html")
  end

end

最后,这是我给自己发邮件时收到的信息:

洛戈拉 21:29(约 7 分钟) À moi

----==_mimepart_5c32651265cd8_16f563ff3a1d01db04642e 内容类型:文本/html; charset=UTF-8 内容传输编码:quoted-printable 测试邀请=C3=A0 d=C3=A9battre。 uh9sNDoDQbYU7ZYixKZHCCjG

Cliquez ici : Rejoindre

按钮 ----==_mimepart_5c32651265cd8_16f563ff3a1d01db04642e 内容类型:文本/html; charset=UTF-8 内容传输编码:quoted-printable 测试邀请=C3=A0 d=C3=A9battre。 Cliquez ici : Rejoindre ----==_mimepart_5c32651265cd8_16f563ff3a1d01db04642e--

任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

正如documentation 中所述,传递:content_type 也期望传递:body(这将跳过模板渲染步骤)。因此,要正确呈现模板,我怀疑您需要删除 content_type: "text/html":

mail(to: @to, subject: @subject)

【讨论】:

如果我删除 content_type 确实有效,但它呈现的是invitation_email.erb 而不是invitation_email.html.erb。如何设计invitation_email.erb 来自定义发送的电子邮件? 所以您确实有两个不同的视图:invitation_email.erbinvitation_email.erb.html?如果是这样,那么默认情况下它会选择invitation_email.erb.html。如果您不需要它们,我建议删除其中一个,但如果您同时需要它们,您可以使用所需视图将块传递给邮件功能mail(to: @to, subject: @subject) do |format| format.html render 'invitation_email.erb' end【参考方案2】:

content="text/html; charset=UTF-8" 错字,缺少一些双引号。 :)

【讨论】:

很遗憾,没有任何变化。

以上是关于ActionMailer Rails:invitation_email.html.erb 文件未读取的主要内容,如果未能解决你的问题,请参考以下文章

Rails ActionMailer 用户邮件发送器 无方法

Rails 5:ActionMailer 的“deliver_later”永远不会在生产中交付

Rails-如何测试ActionMailer发送了特定附件?

Rails 6 ActionMailer预览和http基本身份验证

Rails - 你如何测试 ActionMailer 在测试中发送了特定的电子邮件

ActionMailer 在开发 Rails 4 中不发送邮件