【问题标题】:Is there any way to mix plain text and HTML email on Rails?有没有办法在 Rails 上混合纯文本和 HTML 电子邮件?
【发布时间】:2020-03-10 23:14:10
【问题描述】:

我正在做Ruby on Rails 教程https://www.learnenough.com/ruby-on-rails-6th-edition-tutorial/account_activation#sec-mailer_templates 并且我生成了一个User mailer 用于帐户激活。

代码如下:

app/views/user_mailer/account_activation.text.erb

Hi <%= @user.name %>,

Welcome to the Sample App! Click on the link below to activate your account:

<%= edit_account_activation_url(@user.activation_token, email: @user.email) %>

app/views/user_mailer/account_activation.html.erb

<h1>Sample App</h1>
<p>Hi <%= @user.name %>,</p>
<p>
Welcome to the Sample App! Click on the link below to activate your account:
</p>

<%= link_to "Activate", edit_account_activation_url(@user.activation_token,
                                                    email: @user.email) %>

我了解它们之间的区别(“HTML 是网页和电子邮件模板的编码方式,以便对文本进行格式化并添加图像。纯文本是常规文本,没有粗体、斜体、下划线等格式选项,或特殊布局选项”来源:https://www.cakemail.com/blog/html-vs-plain-text/),

但我不明白为什么有两个文件具有相同的嵌入式 Ruby 代码。我可以将它们混合在一个文件中吗?

【问题讨论】:

    标签: html ruby-on-rails ruby


    【解决方案1】:

    不,您不能将两者混合在一个文件中。 Rails 将分别渲染模板的 .text 和 .html 变体,然后渲染deliver them together in a multipart email。能够显示 HTML 电子邮件的客户端将看到 HTML 变体,而仅能够显示文本的客户端将获得文本。

    如果需要,您可以只提供或提供其他模板,但如果您只使用文本,那么您不能使用 HTML(显然),如果您只使用 HTML,那么无法显示 HTML 的客户端将显示 HTML 源代码作为消息,使其实际上不可读。如果您的电子邮件很简单并且不需要标记,那么您可以只提供一个 .text 模板,一切都应该可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-10
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      相关资源
      最近更新 更多