在Rails中将外部CSS转换为邮件的内联CSS

我正在尝试创建一个应用程序,它将发送风格繁重的电子邮件,并要求客户工作,除了谷歌的Gmail。 我研究了这个问题,看起来Gmail从外部文件或嵌套在’style’标签中的CSS中删除了CSS。 是否存在将样式从外部文件移动到内联的简单方法?

需要的东西:

 .wide { width: 100px; } .cell { display: block; }  Sample 

并将其转换为:

 
Sample

谢谢!

这里有几个你可以看看的gem:

  • 用于轨道的预制器或预制器轨道
  • mail_style
  • premailer plus (以上版本的fork)
  • awesome_email
  • 视Roadie

我写这个答案时没有赢家,但预制者似乎是最新的。

添加了premailer

 def premailer(message) message.text_part.body = Premailer.new(message.text_part.body.to_s, with_html_string: true).to_plain_text message.html_part.body = Premailer.new(message.html_part.body.to_s, with_html_string: true).to_inline_css return message end def welcome(user) @user = user message = mail ... end 

您的推理只有一个问题……不支持许多样式,甚至内联。

以下是电子邮件支持内容的参考

在您的示例中,您使用display:标记,Outlook 07+不支持该标记

我的公司每天发送数以千计的电子邮件,而且我经常帮助他们构建它们。 在实践中,内联样式可以工作,但它并不像插入所有内容那么简单,它会起作用。 您必须非常小心使用的内容以及使用方法。 我已经开始使用纯粹的HTML中的所有内容,并使用表格进行布局。 这基本上是我发现在几乎100%的时间内完成工作的唯一方法。

如果您将此function构建到一个可以大量使用的应用程序中,我还强烈建议您通过其API在Email on Acid中构建。 虽然您可以编写非常好的高质量输出,但毫无疑问,Microsoft会找到一些方法来使您的有效代码无效。 关于Acid的电子邮件将使用Microsoft当时使用的任何疯狂信息来显示您的电子邮件是否有效。 对于那些认真发送大量电子邮件的人来说,这是纯粹的天才和必需的用途。 不,我不为公司工作….