我对正则表达式知之甚少,而且我无法通过电子邮件获取所需信息,所以我希望您的帮助可以阅读以下字段:“status”,“to”,“from”,“主题“和”身体“。
The e-mail has failed, details:
Action: failed
Status: 5.0.0 (permanent failure)
---------- Forwarded message ----------
From: exp@gmail.com
To: regular_exp@gmail.com
Date: Tue, 12 Apr 2011 13:55:23 +0000
Subject: test
hellloooooo
使用JavaScript执行此操作的最佳方式是什么?
由于
答案 0 :(得分:2)
正则表达式可能不是这项工作的最佳工具。你真正想要的是a library that properly parses RFC 2822 email messages,特别是因为你想要提取正文 - 如果你看the spec,你会发现解析电子邮件涉及很多复杂性(文本编码,MIME等等。)
使用mailparser:
var mailparser = require("./mailparser"),
fs = require("fs"),
sys = require("sys");
fs.readFile('mail.txt', function (err, data) {
if (err) throw err;
var mp = new mailparser.MailParser();
// callback for the headers object
mp.on("headers", function(headers){
console.log("HEADERS");
console.log(sys.inspect(headers, false, 5));
});
// callback for the body object
mp.on("body", function(body){
console.log("BODY");
console.log(sys.inspect(body, false, 7));
});
mp.feed(data.toString("ascii"));
mp.end();
});
答案 1 :(得分:0)
假设这些字段与
一样简单且一致 [\n] From: [...][\n]
然后是一个像
这样的表达式 /[\n]( From: ).+[\n]/
适合你。将(From :)替换为(Date :)等等。
并使用string.match(regExp)
<强>更新强>
var bodyRegex = /[\n] Subject: (.+)[\n](.+)/
var string = ...;
var result = string.match(bodyRegex);
result[1]; // Subject
result[2]; // Body