我正在使用premailer-rails3
gem为html电子邮件提取内联样式,我正在尝试使用Twitter bootstrap。
https://github.com/fphilipe/premailer-rails3
看起来有些款式正确,但不是全部。我想知道是否有人有一个很好的工作示例,将他们的Twitter Bootstrap css(已修改或未修改)放入html电子邮件中。
谢谢!
答案 0 :(得分:77)
如果您的意思是“我可以在电子邮件中使用Bootstrap的风格演示吗?”那么你可以,虽然我不知道有谁做过。你需要在表中重新编码所有内容。
如果您使用的是功能,则取决于您查看电子邮件的位置。如果您的很大一部分用户使用的是Outlook,Gmail,Yahoo或Hotmail(这些用户通常会占到大约75%的电子邮件客户端),那么很多Bootstrap的优点都是不可能实现的。 Android上的Mac Mail,iOS Mail和Gmail在渲染CSS方面要好得多,所以如果你主要针对的是移动设备,那就不是那么糟糕了。
font-face
- 您只能使用外部图片。排除所有其他外部资源(CSS文件,字体)。 :hover
,:active
州无法单独设置样式答案 1 :(得分:40)
我为恢复这个旧线程而道歉,但我只是想让每个人都知道有一个非常接近的Bootstrap,就像专门为电子邮件样式创建的CSS框架一样,这里是链接:http://zurb.com/ink/
希望它有所帮助。
Ninja编辑:此后已将其重命名为Foundation for Emails
,新链接为:https://foundation.zurb.com/emails.html
答案 2 :(得分:16)
以下是您无法处理电子邮件的一些事项:
- 包含带样式的部分。 Apple Mail.app支持它,但Gmail和Hotmail不支持,所以这是禁止的。 Hotmail会支持 正文中的样式部分但Gmail仍然没有。
- 链接到外部样式表。没有多少电子邮件客户端支持此功能,最好忘记它。
- 背景图片/背景位置。 Gmail也是此问题的罪魁祸首。
- 清除浮动。再次使用Gmail。
- 的保证金即可。是的,严重的是,Hotmail忽略了利润。基本上任何CSS定位都不起作用。
- 的字体-任何即可。机会是Eudora会忽略你试图用字体声明的任何东西。
来源:http://css-tricks.com/using-css-in-html-emails-the-real-story/
Mailchimp包含您可以使用的电子邮件模板 - here
可以帮助您的更多资源
答案 3 :(得分:10)
您可以使用此https://github.com/advancedrei/BootstrapForEmail b-strapping您的电子邮件。
答案 4 :(得分:1)
我最近花了一些时间研究构建HTML电子邮件模板,我找到的最佳解决方案是使用此http://htmlemailboilerplate.com/。我已经构建了3个非常复杂的模板,并且它们在各种电子邮件客户端中运行良好。
答案 5 :(得分:1)
嗨Brian Armstrong,访问this link。
此博客告诉您如何将 Rails 与 Bootstrap 集成(使用premailer-rails)。
如果你正在使用bootstrap sass,你也可以这样做:
首先将一些Bootstrap sass文件导入email.css.scss
@import "bootstrap-sprockets";
@import "bootstrap/variables";
@import "bootstrap/mixins";
@import "bootstrap/scaffolding";
@import "bootstrap/type";
@import "bootstrap/buttons";
@import "bootstrap/alerts";
@import 'bootstrap/normalize';
@import 'bootstrap/tables';
@import 'bootstrap/progress-bars';
然后在您的视图<head>
部分添加
<%= stylesheet_link_tag "email" %>
答案 6 :(得分:0)
我提出的最佳方法是在选定的基础上使用Sass导入将您的引导程序(或任何其他)样式引入到可能需要的电子邮件中。
首先,为您的电子邮件样式创建一个类似email.scss
的新scss父文件。这看起来像这样:
// Core variables and mixins
@import "css/main/ezdia-variables";
@import "css/bootstrap/mixins";
@import "css/main/ezdia-mixins";
// Import base classes
@import "css/bootstrap/scaffolding";
@import "css/bootstrap/type";
@import "css/bootstrap/buttons";
@import "css/bootstrap/alerts";
// nest conflicting bootstrap styles
.bootstrap-style {
//use single quotes for nested imports
@import 'css/bootstrap/normalize';
@import 'css/bootstrap/tables';
}
@import "css/main/main";
// Main email classes
@import "css/email/zurb";
@import "css/email/main";
然后在您的电子邮件模板中,仅引用已编译的email.css文件,该文件仅包含在email.scss中正确引用和嵌套的选定引导程序样式。
例如,某些引导程序样式将与Zurb的响应表样式冲突。要解决这个问题,您可以在父类或其他选择器中嵌套bootstrap的样式,以便仅在需要时调用bootstrap的表样式。
这样,您就可以灵活地在需要时引入类。您会看到我使用http://zurb.com/
这是一个很好的响应式电子邮件库。另请参阅http://zurb.com/ink/
最后,使用上面提到的https://github.com/fphilipe/premailer-rails3
之类的预编码器将样式处理为内联css,将内联样式编译为仅在该特定电子邮件模板中使用的样式。例如,对于预编译器,您的ruby文件可能看起来像这样将电子邮件编译成内联样式。
require 'rubygems' # optional for Ruby 1.9 or above.
require 'premailer'
premailer = Premailer.new('http://www.yourdomain.com/TestSnap/view/emailTemplates/DeliveryReport.jsp', :warn_level => Premailer::Warnings::SAFE)
# Write the HTML output
File.open("delivery_report.html", "w") do |fout|
fout.puts premailer.to_inline_css
end
# Write the plain-text output
File.open("output.txt", "w") do |fout|
fout.puts premailer.to_plain_text
end
# Output any CSS warnings
premailer.warnings.each do |w|
puts "#{w[:message]} (#{w[:level]}) may not render properly in #{w[:clients]}"
end
希望这有帮助!一直在努力在Pardot,Salesforce以及我们产品的内置自动回复和每日电子邮件中找到灵活的电子邮件模板框架。
答案 7 :(得分:0)
这里的诀窍是你不想包含整个引导程序。问题是电子邮件客户端会忽略媒体查询并处理所有具有大量重要声明的打印样式。
相反,您只需要包含所需的引导程序的特定部分。我的email.css.scss文件如下所示:
@import "bootstrap-sprockets";
@import "bootstrap/variables";
@import "bootstrap/mixins";
@import "bootstrap/scaffolding";
@import "bootstrap/type";
@import "bootstrap/buttons";
@import "bootstrap/alerts";
@import 'bootstrap/normalize';
@import 'bootstrap/tables';
答案 8 :(得分:0)
Bootstrap Email?呢,这似乎很好,并且与bootstrap 4兼容。
答案 9 :(得分:0)
电子邮件需要表格才能正常工作。
Inky(电子邮件基础)是一种模板语言,可将简单的 HTML 标记转换为电子邮件所需的复杂表格 HTML。
<html>
<head></head>
<body>
<table align="center" class="container">
<tbody>
<tr>
<td>
<table class="row">
<tbody>
<tr>
<th class="small-12 large-12 columns first last">
<table>
<tbody>
<tr>
<th>Put content in me!</th>
<th class="expander"></th>
</tr>
</tbody>
</table>
</th>
</tr>
</tbody>
</table>‍
</td>
</tr>
</tbody>
</table>
</body>
</html>
将产生这个: