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.erb
和 invitation_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基本身份验证