使用 Javascript 解析电子邮件源的文本/html 部分

Ben*_*ack 2 javascript regex email mime

使用 javascript,我需要解析text/html电子邮件的 Content-Type部分并仅提取 HTML 部分。这是有问题的邮件源部分的示例:

------=_Part_1504541_510475628.1327512846983
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit


<html ... a bunch of html ...

/html>
Run Code Online (Sandbox Code Playgroud)

我想提取之间(含)的一切<html>标签后text/html。我该怎么做呢?

注意:我可以使用 hacky regex。我不希望这能防弹。

Ωme*_*ega 5

根据 RFC/MIME 文档,封装边界被定义为完全由两个连字符(“-”,十进制代码 45)组成的行,后跟 Content-Type 标头字段中的边界参数值

注意:在 JavaScript 中确实没有/s修饰符可以使点.匹配所有字符,包括换行符。要绝对匹配任何字符,您可以使用包含速记类及其否定版本的字符类,例如[\s\S].


正则表达式:

\n--[^\n\r]*\r?\nContent-Type: text\/html[\s\S]*?\r?\n\r?\n([\s\S]*?)\n\r?\n--
Run Code Online (Sandbox Code Playgroud)

JavaScript:

matches = /\n--[^\n\r]*\r?\nContent-Type: text\/html[\s\S]*?\r?\n\r?\n([\s\S]*?)\n\r?\n--/gim.exec(mail);
Run Code Online (Sandbox Code Playgroud)