是否有一种方法可以自动为Rails 3.0生成HTML电子邮件的文本版本?



我想从我的HAML/HTML模板生成基本的文本电子邮件,其中包括链接(strip_tags将不工作),并可能与一些简单的文本转换的内容,粗体,列表等

我记得很久以前有一个gem做这个,但是我找不到一个与Rails 3.0兼容的。

这是为了避免必须创建两倍的电子邮件和查看文件,并且必须对内容进行一些抽象。我只需要内容在那里,我不在乎它看起来怎么样,因为现在非html的电子邮件客户端非常少。

premailer-rails3 gem提供此https://github.com/fphilipe/premailer-rails3

查看Markerb

它可以让你写你的邮件模板Markdown,它会自动使html和文本版本的电子邮件发送多部分mime

如果你只需要这个功能一次,或者你不想包含和外部依赖,你也可以这样做:

class MyMailer < ApplicationMailer
  using HtmlConverter
  def some_email
    mail(to: 'personexample.net', subject: "Nice email") do |format|
      format.html
      format.text { render plain: render_to_string('some_email.html').html_to_plain }
  end
end

我们让html呈现为一个字符串,然后剥离标签。然后我们将此作为邮件的纯文本版本发送。

String转换的代码为:

# I added a refinement to extend the String class
module HtmlConverter
  refine String do
    def html_to_plain
      preprocessed = self.gsub("<hr>", "n--- --- --- --- --- --- --- --- --- --- --- ---n")
      ActionController::Base.helpers.strip_tags(preprocessed)
        .split("n").map(&:strip).join("n") # fix indentation
        .gsub("nnn", "n") # remove extensive new lines
        .strip
    end
  end
end

相关内容

  • 没有找到相关文章

最新更新