我想从我的HAML / HTML模板中生成包含链接的基本文本电子邮件(strip_tags不起作用),并且可能会对内容进行粗体,列表等的一些简单文本转换。
我记得很久以前有宝石这样做了,但我找不到与Rails 3.0兼容的宝石。
这是为了避免必须创建2x电子邮件和查看文件,并且必须对内容进行一些抽象。我只是想要那里的内容,我并不在乎它看起来如何,因为非HTML电子邮件客户端现在非常罕见。
答案 0 :(得分:2)
查看Markerb
它允许您在Markdown中编写邮件程序模板,并自动生成电子邮件的html和文本版本,以便作为多部分mime发送。
答案 1 :(得分:2)
premailer-rails3
gem提供此https://github.com/fphilipe/premailer-rails3
答案 2 :(得分:0)
如果你只需要一次这个功能或者你不想包含和外部依赖,你也可以这样做:
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("\n\n\n", "\n") # remove extensive new lines
.strip
end
end
end