A melhor abordagem que eu propus é usar as importações do Sass em uma base selecionada para puxar seus estilos de bootstrap (ou qualquer outro) para e-mails conforme necessário.
Primeiro, crie um novo arquivo pai scss semelhante email.scss
ao seu estilo de e-mail. Pode ser assim:
// 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";
Em seguida, em seus modelos de email, referencie apenas o arquivo email.css compilado, que contém apenas os estilos de bootstrap selecionados referenciados e aninhados corretamente em seu email.scss.
Por exemplo, certos estilos de bootstrap entrarão em conflito com o estilo de tabela responsiva do Zurb. Para corrigir isso, você pode aninhar os estilos do bootstrap em uma classe pai ou outro seletor para chamar os estilos de tabela do bootstrap somente quando necessário.
Dessa forma, você tem a flexibilidade de obter classes apenas quando necessário. Você verá que eu uso, http://zurb.com/
que é uma ótima biblioteca de e-mail responsiva para usar. Veja tambémhttp://zurb.com/ink/
Por último, use um pré-mailer como https://github.com/fphilipe/premailer-rails3
mencionado acima para processar o estilo em css embutido, compilando estilos embutidos apenas para o que é usado naquele modelo de email específico. Por exemplo, para o pré-mailer, seu arquivo ruby pode ser parecido com este para compilar um e-mail no estilo embutido.
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
Espero que isto ajude! Tenho lutado para encontrar uma estrutura de modelagem de e-mail flexível no Pardot, Salesforce e na resposta automática e nos e-mails diários integrados do nosso produto.