Markdown to text / plain和text / html for multipart email

时间:2010-05-13 10:00:16

标签: ruby-on-rails email markdown

我正在寻找一种在Rails中发送DRY多部分电子邮件的解决方案。使用DRY我的意思是邮件的内容只定义一次。

我已经考虑了一些可能的解决方案,但还没有找到任何现有的实现。

我想到的解决方案是:

  • 从I18n加载文本并为html邮件应用Markdown,并为文本邮件应用具有特殊输出类型的Markdown
    • 链接放在链接文本
    • 后的括号中
    • 粗体,斜体和其他无意义的格式将被删除
    • 维护有序和无序列表
  • 仅根据上述条件生成html邮件并将其转换为文本

那里有可用的解决方案吗?哪一个可能是更好的方法呢?

2 个答案:

答案 0 :(得分:2)

Crafting Rails Applications的第4章中,Jóse Valim引导您了解如何创建一个“merb”处理程序,该处理程序使用带有穿插erb的markdown并可以编译为text和html。然后,您创建一个邮件生成器,为您的每个邮件操作生成一个merb模板。

您可以在我链接到的页面上阅读该章节的摘录。我强烈推荐购买这本书。

如果您对使用我在该书中描述的遗憾版本感兴趣,可以在Gemfile中使用它:

gem 'handlers', :git => "git://github.com/chadoh/handlers.git"

请注意,我几乎不知道我在做什么,我不会对那个宝石进行版本控制,而且我可能根本不会保持它。坦率地说,我希望我能找到一个做得更好的人,但我没有成功。如果你想分配我的项目并成为做得更好的人,去吧

答案 1 :(得分:1)

这是一个PITA,但是唯一的方式来干掉邮件,这样你就可以同时支持HTML(multipart)&明文:

将html电子邮件副本放入ActionMailer视图目录中的部分文件中,扩展名如下:_action.html.erb

将“action”替换为您正在使用的任何动作名称。

然后在同一目录中再创建2个文件: action.text.html.erb和 action.text.plain.erb

在text.html partial:

<%= render "action.html", :locals => {:html => true} %>

在text.plain partial:

<% content = render "action.html", :locals => {:html => false} %>
<%= strip_tags(content) %>

这对我有用,虽然它确实让我想为madmimi支付每月服务