使用 Javascript 解析电子邮件源的文本/html 部分
Parse text/html part of email source using Javascript
使用javascript,我需要解析电子邮件的内容类型text/html
部分并仅提取HTML部分。下面是相关邮件源部分的示例:
------=_Part_1504541_510475628.1327512846983
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit
<html ... a bunch of html ...
/html>
我想在text/html
之后提取<html>
标签之间的所有内容(包括)。我该怎么做?
注意:我可以使用一个笨拙的正则表达式。我不认为这是防弹的。
根据 RFC/MIME 文档,封装边界定义为完全由两个连字符("-",十进制代码 45)组成的行,后跟来自内容类型标头字段的边界参数值。
注意:在 JavaScript 中,确实没有/s
修饰符可以使点.
匹配所有字符,包括换行符。要绝对匹配任何字符,可以使用包含速记类及其否定版本的字符类,例如 ['s'S]
。
正则表达式:
'n--[^'n'r]*'r?'nContent-Type: text'/html['s'S]*?'r?'n'r?'n(['s'S]*?)'n'r?'n--
JavaScript:
matches = /'n--[^'n'r]*'r?'nContent-Type: text'/html['s'S]*?'r?'n'r?'n(['s'S]*?)'n'r?'n--/gim.exec(mail);
Ωmega 的答案很接近,但您无法确定边界是否包含-
字符。
您首先需要在标题中查看。实际电子邮件内容的标题和正文将由 'r'n'r'n
分隔。您应该会看到类似
Content-Type: multipart/alternative;
boundary="------=_Part_1504541_510475628.1327512846983"
然后,您可以使用此边界来查找实际的分隔线。然后,您可以像 Ωmega 一样构造一个正则表达式,但在此分隔符中替换。
唯一需要注意的是,除了正常的边界内容外,最后一个边界的末尾还会有--
。
var html = source.toString().substr(source.toString().indexOf("'n'n")).trim();
相关文章:
- 我收到消息“资源解释为脚本,但使用 MIME 类型文本/html 传输”
- 如何使按钮单击并更改以前显示的文本(html)
- 使用 Javascript 解析电子邮件源的文本/html 部分
- Javascript/jQuery,将CSS应用于包含特定文本/html的元素
- jQuery文本html操作,以查找大量文本中出现的字符,然后更改其颜色
- 使用 Jquery 创建具有转义文本 + HTML 的元素
- 在空节点(如文本节点)中添加文本/html
- 从网站获取特定文本 (html)
- 如何解决“资源解释为脚本但使用 MIME 类型文本/html 传输”
- 请求 JSONP 时的文本/html 输出
- 将元素添加到 DOM 给定的纯文本 HTML 中,仅使用纯 JavaScript(没有 jQuery)
- 在gmail撰写邮件区域中获取选中/突出显示的文本html
- 如何确定是否在父元素的开始或结束存在文本?HTML DOM &JavaScript
- 在输入文本html中显示格式
- 如何使纯文本html javascript
- 资源解释为脚本,但传输MIME类型文本/html javascript
- 从Javascript传递文本- HTML- PHP
- 从DOM对象中获取文本/html
- 脚本类型=“文本/ html"从文件中包含HTML
- jsFiddler.NET中的文本/HTML编辑器