Ruby on rails 将Mail-in-Rails的外部CSS转换为内联CSS
我正在尝试创建一个应用程序,它将发送风格厚重的电子邮件,并且除了谷歌的Gmail之外,还需要客户端工作。我研究了这个问题,它看起来像是Gmail从外部文件中剥离了CSS,或者是嵌套在“样式”标签中的CSS。是否存在将样式从外部文件移动到内联文件的简单方法 需要:Ruby on rails 将Mail-in-Rails的外部CSS转换为内联CSS,ruby-on-rails,css,ruby,email,gmail,Ruby On Rails,Css,Ruby,Email,Gmail,我正在尝试创建一个应用程序,它将发送风格厚重的电子邮件,并且除了谷歌的Gmail之外,还需要客户端工作。我研究了这个问题,它看起来像是Gmail从外部文件中剥离了CSS,或者是嵌套在“样式”标签中的CSS。是否存在将样式从外部文件移动到内联文件的简单方法 需要: <style> .wide { width: 100px; } .cell { display: block; } </style> <span class="wide cell">Sample<
<style>
.wide { width: 100px; }
.cell { display: block; }
</style>
<span class="wide cell">Sample</span>
.wide{width:100px;}
.cell{display:block;}
样品
并将其转换为:
<div class="wide cell" style="width: 100px; display: block;">Sample</div>
示例
谢谢 您的推理只有一个问题……许多样式,甚至内联样式,都不受支持 这是你的参考资料 在您的示例中,您使用了display:标记,Outlook 07不支持该标记+ 我的公司每天发送数千封电子邮件,我经常参与其中。在实践中,内联样式是可行的,但它并不像将所有内容都内联一样简单,而且它会起作用。你必须非常小心你使用什么以及如何使用它。我从一开始就采用了纯HTML格式,几乎所有的事情都是用表格进行布局的。基本上,这是我发现的让事情在几乎100%的时间里正常运转的唯一方法
如果你正在将此功能构建到一个将得到大量使用的应用程序中,我也强烈建议通过他们的API来构建。虽然您可以编写高质量的输出代码,但毫无疑问,Microsoft会找到一些方法使您的有效代码无法工作。Acid上的电子邮件将使用Microsoft当时使用的任何疯狂来显示您的电子邮件是否有效。这是纯粹的天才,对于那些认真想发送大量电子邮件的人来说是必需的。不,我不在公司工作……添加了
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
以下是一些您可以查看的宝石:
- 还是铁轨
- (以上版本的分叉)
我在写这个答案时没有赢家,但premailer似乎是最新的。没有可用的来源,但这里有一个链接:@thirtydot这正是我要找的!你知道他们是否提供API吗?我不知道。可能有一个类似的工具,有可用的源代码。我会在谷歌上搜索“风格内联”,看看是否有任何可用的源代码。如果它是Ruby,对你来说太好了,否则你就必须移植它。我不知道您希望使用内联功能的频率有多高(或者它的“任务关键性”程度有多高),但可能值得考虑一种简单快捷的方法,即直接向此处发送POST请求():谢谢。我可以修改样式表以只使用支持的文件,但是我不想将所有样式都内联移动。谢谢,我已经使用了premailer(参见答案)。干杯现在还有-一个分叉的邮件样式。如果你在轨道上,我推荐Roadie。实现起来不容易。还有一个gem,我可以很快地将它安装到位,没有任何问题。(我不知道它与Roadie相比如何。)谢谢@JasonSwett,我已经将它添加到列表中。