使用Ruby中的ActionMailer类在电子邮件正文中呈现HTML字符串

时间:2018-02-15 15:07:11

标签: ruby-on-rails ruby render actionmailer

我尝试使用ActionMailer类在ROR中发送邮件。

我创建了一个邮件对象,如:

mail(to: 'xyz@gmail.com', subject: "some subject text", body: template)

此处模板是一个字符串,其中包含要在邮件正文中呈现的HTML。

当我尝试上述声明时,HTML字符串会在Gmail或任何其他客户端显示,而不是呈现。

我意识到我可以为视图创建一个单独的ERB文件 邮件程序视图位于app / views / name_of_mailer_class中 目录。

但我希望渲染HTML字符串,而不是将其存储在文件中,而是将其从内联源生成。

我也尝试过在下面的链接中找到的这种方法,但它产生了相同的结果。 http://carols10cents.github.io/versioned_rails_guides/v3.2.2/action_mailer_basics.html

mail(:to => user.email,
         :subject => "Welcome to My Awesome Site") do |format|
      format.html { render 'another_template' }
      format.text { render :text => 'Render text' }
    end 

2 个答案:

答案 0 :(得分:2)

终于找到了一种在没有任何视图文件的情况下呈现HTML的方法。制作HTML字符串html_safe在电子邮件客户端中呈现HTML。

mail(to: 'xyz@gmail.com', subject: 'some subject text') do |format| format.html { render html: template.to_s.html_safe }

答案 1 :(得分:0)

你可以这样做:

master..spt_values

在您的ActionMailer视图@template = template.html_safe mail(to: 'xyz@gmail.com', subject: "some subject text") 中,只需将字符串渲染为

即可
app/views/name_of_mailer_class

希望有所帮助