【发布时间】:2010-11-19 06:39:02
【问题描述】:
许多电子邮件客户端不喜欢链接的 CSS 样式表,甚至不喜欢嵌入的 <style> 标记,而是希望 CSS 内联显示为所有标记的样式属性。
- 错误:
<link rel=stylesheet type="text/css" href="/style.css"> - 错误:
<style type="text/css">...</style> - 作品:
<h1 style="margin: 0">...</h1>
但是,这种内联样式属性方法管理起来很麻烦。
我找到了用于 Ruby 和 PHP 的工具,它们将 CSS 文件和一些单独的标记作为输入并返回合并结果 - 一个标记文件,所有 CSS 都转换为样式属性。
我正在寻找针对此问题的 Perl 解决方案,但我在 CPAN 上或通过 Google 搜索都没有找到。任何指针?或者,是否有 CPAN 模块可以组合起来达到相同的结果?
【问题讨论】:
-
@mintywalker 我发布的代码处理了我拥有的一堆文件,从有效的 HTML 生成了有效的 HTML,从有效的 CSS 生成了看似有效的 CSS。你试过了吗?很高兴能得到一些反馈。
-
@Sinan Ünür:是的-它确实可以运行并且非常接近,但是我注意到通过评论您的答案并不太正确-这是 CSS::DOM 问题,而不是您的问题。并且缺乏对 cmets 的预览意味着评论被破坏了,但我认为你应该能够找出症结所在。非常感谢您的帮助,我将尝试使用 CSS::DOM,但我担心这里的复杂性可能超出我的能力。
-
HTML::TreeBuilder和CSS可能更容易。我正在做一些实验。 -
为什么必须是 Perl?例如,你能用 Ruby 的东西来做一个单独的过程吗?
-
@brian d foy :一般来说,脱壳不会是一个大问题,除了我们会为每个用户生成大量电子邮件,因此脱壳的“成本”是对我们来说不是微不足道的。也许相对于进行 css 转换的成本不是很高,但仍然如此。