将css块转换为样式属性

premailer_cspw的Python项目详细描述


将css块转换为样式属性

当你发送HTML邮件时,你不能使用样式标签,而是 必须在每个元素上放置inlinestyle属性。所以从这里:

<html>
<style type="text/css">
h1 { border:1px solid black }
p { color:red;}
</style>
<h1 style="font-weight:bolder">Peter</h1>
<p>Hej</p>
</html>

你想要这个:

<html>
<h1 style="font-weight:bolder; border:1px solid black">Peter</h1>
<p style="color:red">Hej</p>
</html>

预编译器这样做。它解析一个html页面,查找样式块 并解析css。然后使用lxml.html解析器修改 相应的页面的dom树。

开始

如果您还没有安装,请先安装预编译器

$ pip install premailer

接下来,最基本的用法是使用快捷键功能,如下所示:

>>> from premailer import transform
>>> print transform("""
...         <html>
...         <style type="text/css">
...         h1 { border:1px solid black }
...         p { color:red;}
...         p::first-letter { float:left; }
...         </style>
...         <h1 style="font-weight:bolder">Peter</h1>
...         <p>Hej</p>
...         </html>
... """)
<html>
<head></head>
<body>
<h1 style="font-weight:bolder; border:1px solid black">Peter</h1>
        <p style="color:red">Hej</p>
        </body>
</html>

有关更高级的选项,请查看预编译器类的代码 以及它的构造函数中的所有选项。

将相对URL转换为绝对URL

premailer可以为您做的另一件事是转换相对url(例如。 “/some/page.html”转换成“http://www.peterbe.com/some/page.html”)。它 对所有不具有属性的src属性执行此操作:// 参与其中。例如,转动此键:

<html>
<body>
<a href="/">Home</a>
<a href="page.html">Page</a>
<a href="http://crosstips.org">External</a>
<img src="/folder/">Folder</a>
</body>
</html>

进入这个:

<html>
<body>
<a href="http://www.peterbe.com/">Home</a>
<a href="http://www.peterbe.com/page.html">Page</a>
<a href="http://crosstips.org">External</a>
<img src="http://www.peterbe.com/folder/">Folder</a>
</body>
</html>

通过使用转换('…',base_url='http://www.peterbe.com/')

额外创建的HTML属性

如果css 包含任何易于转换为HTML属性的属性。为了 例如,如果您有这个css:td{背景色:eee;},则 它被转换为style=“background color:eee”并作为 html属性bgcolor=“eee”

拥有这些额外的属性,基本上是为真正的狗屎做“后盾” 甚至不能接受样式属性的电子邮件客户端。很多 专业的html新闻稿,比如amazon使用这个。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
当使用RequestDispatcher时,servlets Java最终没有被调用   java生成对具有可变参数数的方法的调用   java如何使用select子句中的参数化列映射iBATIS的查询?   java无法创建类型为org的插件。阿帕奇。登录中。log4j。果心阿佩德。元素RollingFile的RollingFileAppender   java当子实体和父实体之间存在OneTONE JPA关系时,是否可以将其与父实体一起持久化?   Android上的java Facebook集成fbconnect断开链接   获取方法调用方的java机制   从列表创建Oracle阵列时出现java问题   添加和检索元素的ArrayList的java ArrayList   在java中从字符串中删除无效的XML字符   java如何构建完整生成的maven模块   java如何准确地改变播放所有分辨率midi文件的速度?   shell javac:无效标志:/src/中位_度。ubuntu中的java   java使用从其他类的方法检索到的信息