我想从我的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