我正在寻找一种在Rails中发送DRY多部分电子邮件的解决方案。使用DRY我的意思是邮件的内容只定义一次。
我已经考虑了一些可能的解决方案,但还没有找到任何现有的实现。
我想到的解决方案是:
那里有可用的解决方案吗?哪一个可能是更好的方法呢?
答案 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支付每月服务