为 mime 附件包装内联 javascript(每行最多 72 个字符)

Posted

技术标签:

【中文标题】为 mime 附件包装内联 javascript(每行最多 72 个字符)【英文标题】:Wrapping inline javascript for mime attachment (72 characters MAX per line) 【发布时间】:2011-08-13 10:34:08 【问题描述】:

我正在生成一封带有 html mime 附件的电子邮件,该附件需要 离线 可用。 HTML 需要一些 javascript,特别是 jQuery 和 Date.js。

我遇到的问题是 javascript 需要在 72 个字符后换行,有人告诉我这是出于 CANSPAM 的原因。此外,一些 SMTP 服务器会在这么多字符后强制换行。如果强制换行发生在 javascript 不能有换行符的地方,它会破坏 javascript。 (缩小的 jQuery 是 1 行,超过 72 个字符多次)。

是否有库或工具可用于解析 javascript 的文本,并在 javascript 友好的地方插入换行符?

我的应用程序代码是用 Ruby 编写的。

更新

--line-break 72 在考虑到 72 个字符时非常慷慨,甚至将函数定义的大括号与函数参数放在同一行。

--line-break 0 运行并在vim 中执行:s/\)/)\r/g 后,行似乎足够短

【问题讨论】:

【参考方案1】:

YUI Compressor 将允许您使用 --line-break 选项为每行指定最大列长度:

--line-break
   Some source control tools don't like files containing lines longer than,
   say 8000 characters. The linebreak option is used in that case to split
   long lines after a specific column. It can also be used to make the code
   more readable, easier to debug (especially with the MS Script Debugger)
   Specify 0 to get a line break after each semi-colon in JavaScript, and
   after each rule in CSS.

根据经验,我发现它更多地将其视为指导方针而不是严格的规则。例如,如果您将 line-break 设置为 80 个字符,并且您有一个 100 个字符的字符串,它不会为您拆分该字符串。

但是,根据您的输入文件,您可能能够使其工作。

【讨论】:

以上是关于为 mime 附件包装内联 javascript(每行最多 72 个字符)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Perl Email::Mime 内联图像?

在 MIME 中嵌入图像

我可以防止 MIME 嵌入的 html 图像显示为附件吗?

如何解析带有附件和内联图像的 EML 文件并转换为 HTML

wordpress MIME 类型帖子附件的 if 语句

带有多个附件 + html 的 SMTP 邮件 Mime