Skip to main content
Version:
0.2.4
Download:

http://pypi.python.org/pypi/inlinestyler/

Source:

http://github.com/dlanger/inlinestyler/

Keywords:

inline, HTML, CSS, email, preflight

inlinestyler is an easy way to locally inline CSS into an HTML email message.

Styling HTML email is a black art. CSS works, but only when it’s been placed inline on the individual elements (and event then, not always) - which makes development frustrating, and iteration slow.

The general solution is to use an inlining service, which takes a message with the CSS placed externally, and rewrites it so that all CSS is applied to the individual elements. The most widely used of these services - and as far as I can tell, the one that powers CampaignMonitor - is Premailer. It’s a great service, and the guys behind it put a lot of work into keeping it up to date with the most recent discoveries in what works and what doesn’t.

inlinestyler takes (most) of the functionality of Premailer, and makes it available locally, accessible without having call a remote service.

To see what inline-styler can do, check out this demo.

Caveat Emptor

This project is relatively unmaintained. I will continue to do simple bugfixes (and patches with tests are welcome), but I won’t be adding features or making new CSS attributes work.

If this doesn’t do what you need, check out the premailer project.

History

Dave Cranwell wrote the original inline-styler single-app Django project. inlinestyler is a refactor of that project into a free-standing package usable outside of Django.

Requirements

inlinestyler requires the following packages in order to run:

  • cssutils

  • lxml

It also requires a css_complaiance.csv file, which indicates the compatibility of various email clients with certain CSS features. This is included with the package, but can be updated manually from Campaign Monitor’s spreadsheet.

Usage

from inlinestyler.utils import inline_css
message_inline_css = inline_css(message_external_css)

message_external_css must be a string containing the message to be inlined, with the CSS presented in the HTML as one of:

  • an absolute link <link rel="stylesheet" href="http://mysite.com/styles.css" />

  • a <style> block in the <head>, without the use of @import.

The code will also calculate an estimate for how compatible your message is with various clients (using the css_compliance.csv file), but this number isn’t yet exposed.

Contributions

All development happens at github: http://github.com/dlanger/inlinestyler.

To get yourself started:

  1. Clone this repo somewhere

  2. make init to install the right dependencies

  3. make test to run the test suite

Contributions are always more than welcome. If you see something missing, add it in and send me a pull request.

NOTE: Ubuntu 12.04 (and some other distros) include libxslt version 1.1.26, which changes the now-empty <head> tag to <head/> - which isn’t valid HTML 5. To see which version of libxslt was used to build your libxml, examine the output of make init and look for the line that looks like Using build configuration of libxslt 1.1.XX; if that says 26, some test failures are expected (at which point, you can rely on TravisCI to run your tests for you).

You could also install your own version of libxslt from source, but you’re probably going to have a bad time.

License

This distribution is licensed under the New BSD License. Please see the LICENSE file for a full copy of the license text.

As far as I can tell, Dave Cranwell released the underlying inline-styler project into the public domain:

I’m […] releasing it to the public after many requests for the source.

Release files for inlinestyler 0.2.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for inlinestyler 0.2.5
File Size Uploaded
inlinestyler-0.2.5.tar.gz 14.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for inlinestyler 0.2.5
File Interpreter ABI Platform
inlinestyler-0.2.5-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 32.0 kB

Release files / inlinestyler-0.2.5.tar.gz

Download URL inlinestyler-0.2.5.tar.gz
Size 14.9 kB
Tags Source
SHA-256 checksum
How to use checksums
49ff2d03bc848ab6edc1123421efb0264eb4f53bf5bad22685039fda98ee5a05
BLAKE2b-256 checksum
How to use checksums
9f00a56d92c426b3cbb2657204422d5d3eb272a47066b78acbd8aaecba4a46e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / inlinestyler-0.2.5-py2.py3-none-any.whl

Download URL inlinestyler-0.2.5-py2.py3-none-any.whl
Size 17.1 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
7cc301bdca944c9a09ae5d57a761af7b94d2ebc93aa9699ba67b12bd4d985b08
BLAKE2b-256 checksum
How to use checksums
f83a4f20eccc1673291be57653dc2bfa117fee2dfcbf0e9a5bc0c6862885d506
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.2.5 This release

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

1 release file

0.2.0

2 release files

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page