【发布时间】:2013-02-24 00:49:50
【问题描述】:
我按照官方指南设置了一个带有多部分视图的标准 Rails 邮件程序,如下所示:
mail(to: user.email, subject: "Welcome") do |format|
format.html { render layout: 'my_layout' }
format.text
end
本着明确和普遍的意图优先考虑html版本的邮件,结果发现,作为this article points out,在format.text之前调用format.html使得很多邮件客户端只显示文本消息的版本。在我的例子中,我用 Gmail 和 Mozilla Thunderbird 验证了(并努力解决了这个问题)。
是否有可靠的解决方案优先考虑 html 版本?
【问题讨论】:
-
我不知道邮件有优先级。删除块时会发生什么?如果我们不需要传递任何特定细节,我们不会将块传递给 mail 方法。我们只提供 html 和文本模板,它们作为电子邮件的一部分发送。
-
鉴于我需要该块,因为我需要为 html 版本指定布局(我刚刚编辑了问题以显示这一点),我只是做了一个快速测试,将布局直接应用于 html 消息并删除块:事实证明,如果没有块,它的工作方式是正确的(优先于 html 版本)。
-
收件人而不是发件人决定他们喜欢哪种格式。如果您不希望他们拥有查看文本的选项,即使那是他们喜欢的,请不要创建文本版本。
-
查看有关配置
parts_orderapi.rubyonrails.org/classes/ActionMailer/Base.html 的文档也许将text/html放在text/plain之前会有所帮助 -
似乎已在github.com/rails/rails/commit/… 中修复
标签: ruby-on-rails ruby-on-rails-3 email html-email