Premailer README
What is this?
For the best HTML e-mail delivery results, CSS should be inline. This is a huge pain and a simple newsletter becomes un-managable very quickly. This script is my solution.
- CSS styles are converted to inline style attributes Checks style and link tags and preserves existing inline attributes
- Relative paths are converted to absolute paths Checks links in href, src and CSS url('')
- CSS properties are checked against e-mail client capabilities Based on the Email Standards Project's guides
- A plain text version is created Optional
Premailer 2.0 is coming
I'm looking for input on a version 2.0 update to Premailer. PLease visit the Premailer 2.0 Planning Page and give me your feedback.
Installation
Download the Premailer gem from RubyGems.
sudo gem install premailer
Example
premailer = Premailer.new('http://example.com/myfile.html', :warn_level => Premailer::Warnings::SAFE)
# Write the HTML output
fout = File.open("output.html", "w")
fout.puts premailer.to_inline_css
fout.close
# Write the plain-text output
fout = File.open("ouput.txt", "w")
fout.puts premailer.to_plain_text
fout.close
# Output any CSS warnings
premailer.warnings.each do |w|
puts "#{w[:message]} (#{w[:level]}) may not render properly in #{w[:clients]}"
end
Ruby Compatibility
Premailer is tested on Ruby 1.8.7, Ruby 1.9.2 and Ruby 1.9.3 (preview 1). It also works on REE. JRuby support is close; contributors are welcome. Checkout the latest build status on the Travis CI dashboard.
Premailer-specific CSS
Premailer looks for a few CSS attributes that make working with tables a bit easier.
-premailer-widthAvailable on table, th and td elements
-premailer-heightAvailable on table, tr, th and td elements
-premailer-cellpaddingAvailable on table elements
-premailer-cellspacingAvailable on table elements
Each of these CSS declarations will be copied to appropriate element's attribute.
For example
table { -premailer-cellspacing: 5; -premailer-width: 500;}
will result in
for Outlook
Credits and codeThanks to all the wonderful contributors for their updates. Thanks to Greenhood + Company for sponsoring some of the 1.5.6 updates, and to Campaign Monitor for supporting the web interface. The web interface can be found at premailer.dialect.ca. The source code can be found on GitHub. Copyright by Alex Dunae (dunae.ca, e-mail 'code' at the same domain), 2007-2011. See LICENSE.rdoc for license details. |