我正在尝试创建一个应用程序,该应用程序将发送风格繁重的电子邮件,并且要求客户除了Google的Gmail之外还要工作。我研究了这个问题,看起来Gmail从外部文件中删除了CSS,或者嵌套在'style'标签中的CSS。将样式从外部文件移动到内联是否存在简单方法?
需要采取的措施:
<style>
.wide { width: 100px; }
.cell { display: block; }
</style>
<span class="wide cell">Sample</span>
并将其转换为:
<div class="wide cell" style="width: 100px; display: block;">Sample</div>
谢谢!
答案 0 :(得分:38)
以下是您可以查看的几款宝石:
我在撰写此答案时没有获胜者,但预制商似乎是最新的。
答案 1 :(得分:6)
添加了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
答案 2 :(得分:4)
你的推理只有一个问题......不支持许多样式,甚至内联。
的参考资料在您的示例中,您使用了Outlook 07 +
不支持的display:标记我的公司每天会发送数千封电子邮件,而且我经常会帮助他们建立这些电子邮件。在实践中,内联样式可以工作,但它并不像插入所有内容那么简单,它会起作用。您必须非常小心使用的内容以及使用方法。我已经开始使用纯粹的HTML中的所有内容,并使用表格进行布局。这基本上是我发现在几乎100%的时间内完成工作的唯一方法。
如果您正在将此功能构建到一个可以大量使用的应用中,我还强烈建议您通过其API在Email on Acid中构建。虽然您可以编写非常好的高质量输出,但毫无疑问,Microsoft会找到一些方法来使您的有效代码无效。关于Acid的电子邮件将使用Microsoft当时使用的任何疯狂信息来显示您的电子邮件是否有效。对于那些认真发送大量电子邮件的人来说,这是纯粹的天才和必需的用途。不,我不为公司工作....