【发布时间】:2012-12-14 16:05:21
【问题描述】:
当我在 heroku 使用 SendGrid 服务时,我注意到当我发送基于 HTML 的电子邮件时,CSS 不起作用,谁能告诉我可能出了什么问题?
我尝试将其作为 html.haml、html.erb 发送,但两者都不起作用,尽管在发送的电子邮件中可以正确查看图像。
有什么想法吗?
【问题讨论】:
标签: css ruby-on-rails-3 heroku html-email sendgrid
当我在 heroku 使用 SendGrid 服务时,我注意到当我发送基于 HTML 的电子邮件时,CSS 不起作用,谁能告诉我可能出了什么问题?
我尝试将其作为 html.haml、html.erb 发送,但两者都不起作用,尽管在发送的电子邮件中可以正确查看图像。
有什么想法吗?
【问题讨论】:
标签: css ruby-on-rails-3 heroku html-email sendgrid
尝试使用内联样式而不是外部样式表。 像这样:
<div style="color:green;" id="div"></div>
而不是这样的:
<style>
#div {
color:green;
}
</style>
<div id="div"></div>
(感谢 Kelvis Miho 指出这一点)
编辑:我在 Google 上搜索了 @Joe 的文字,发现大部分是从 http://css-tricks.com/using-css-in-html-emails-the-real-story/ 复制而来的。
编辑:乔编辑了他的帖子以包含参考链接。
请记住,大多数电子邮件客户端不支持大量 CSS,因此您应该主要同时使用图像和表格。
例如,您可以编写出色的电子邮件设计代码,然后对其进行截图。使用表格,您可以将徽标放在顶部居中,将截图精美的“特色”窗格放在左侧,将“折扣”作为徽标下方的中心内容等。
【讨论】:
你不能做什么:
还有很多事情是您应该注意的。有关哪些在线电子邮件服务支持哪些内容的完整列表,请查看 Xavier Frenette 上的这篇文章。
你能做什么。
简而言之,内联样式。这并不像您想象的那么糟糕,因为我们基本上是在开发一次性电子邮件,内联样式并不像在网站上使用它们那样令人震惊。
【讨论】:
您需要使用内联样式。
【讨论】:
对我来说,premailer-rails gem 就像一个魅力。您只需将这些宝石添加到您的 Gemfile 中
gem 'nokogiri'
gem 'premailer-rails'
您的所有电子邮件都将包含资产文件夹中的样式。我通常在资产文件夹中创建一个email.css.less,然后将其包含在电子邮件的<head> 中,如下所示
<%= stylesheet_link_tag 'email.css' %>
而且,当我需要包含 图像 时,我发现了这个帮助程序,它允许我将图像附加到电子邮件中,以便它们具有徽标和内容。
module EmailHelper
def email_image_tag(image, **options)
attachments[image] = File.read(Rails.root.join("public/#{image}"))
image_tag attachments[image].url, **options
end
end
在 .erb 模板中
<%= email_image_tag "img/logo.png", :class => "some-class" %>
希望对某人有所帮助,问候
【讨论】:
确保将内部样式放入 head 标签内
例如:
<head>
<style type="text/css">
...
...
</style>
</head>
注意:仅支持内联样式和内部样式(必须在head标签中)。
【讨论】: