node.js: 邮件解析器不工作
node.js: mailparser not working
我想解析一封邮件,找到了 mailparser 包。 (使用 "npm install mailparser" 安装)。
我正在使用 windows 7。
我正在尝试 运行 这个简单的例子,但是 "end" 事件没有被调用而且我没有看到任何日志。
这就是我 运行:
const MailParser = require("mailparser").MailParser;
const mailparser = new MailParser({debug: true});
let email = "From: 'Sender Name' <sender@example.com>\r\n"+
"To: 'Receiver Name' <receiver@example.com>\r\n"+
"Subject: Hello world!\r\n"+
"\r\n"+
"How are you today?";
// setup an event listener when the parsing finishes
mailparser.on("end", function(mail_object){
console.log("From:", mail_object.from); //[{address:'sender@example.com',name:'Sender Name'}]
console.log("Subject:", mail_object.subject); // Hello world!
console.log("Text body:", mail_object.text); // How are you today?
});
// send the email source to the parser
mailparser.write(email);
mailparser.end();
我做错了什么?
感谢
根据 the fine manual,只有两个事件:headers
和 data
。
也许最简单的方法是使用 simpleParser
instead of the lower-level (event-driven) MailParser
:
const simpleParser = require('mailparser').simpleParser;
...
simpleParser(email).then(function(mail_object) {
console.log("From:", mail_object.from.value);
console.log("Subject:", mail_object.subject);
console.log("Text body:", mail_object.text);
}).catch(function(err) {
console.log('An error occurred:', err.message);
});
OP 似乎在询问 mazira/mailparser-mit, which is a fork of the more popular nodemailer/mailparser。
主线 mailparser
已经切换回 MIT 许可证,并且 mailparser-mit
分支在撰写本文时已经两年没有更新了。
这是一个从 mailparser
包中开始使用较低级别 MailParser
class 的示例:
const {MailParser} = require('mailparser') // v3.0.1
const {createReadStream} = require('fs')
const parseEmail = async (readableStream) =>
new Promise((resolve, reject) =>
readableStream
.pipe(new MailParser())
.on('headers', (headers) => console.log('headers', headers))
.on('data', (data) => console.log('data', data))
.on('error', reject)
.on('end', resolve),
)
parseEmail(createReadStream('emails/test1.eml'))
我想解析一封邮件,找到了 mailparser 包。 (使用 "npm install mailparser" 安装)。 我正在使用 windows 7。 我正在尝试 运行 这个简单的例子,但是 "end" 事件没有被调用而且我没有看到任何日志。 这就是我 运行:
const MailParser = require("mailparser").MailParser;
const mailparser = new MailParser({debug: true});
let email = "From: 'Sender Name' <sender@example.com>\r\n"+
"To: 'Receiver Name' <receiver@example.com>\r\n"+
"Subject: Hello world!\r\n"+
"\r\n"+
"How are you today?";
// setup an event listener when the parsing finishes
mailparser.on("end", function(mail_object){
console.log("From:", mail_object.from); //[{address:'sender@example.com',name:'Sender Name'}]
console.log("Subject:", mail_object.subject); // Hello world!
console.log("Text body:", mail_object.text); // How are you today?
});
// send the email source to the parser
mailparser.write(email);
mailparser.end();
我做错了什么? 感谢
根据 the fine manual,只有两个事件:headers
和 data
。
也许最简单的方法是使用 simpleParser
instead of the lower-level (event-driven) MailParser
:
const simpleParser = require('mailparser').simpleParser;
...
simpleParser(email).then(function(mail_object) {
console.log("From:", mail_object.from.value);
console.log("Subject:", mail_object.subject);
console.log("Text body:", mail_object.text);
}).catch(function(err) {
console.log('An error occurred:', err.message);
});
OP 似乎在询问 mazira/mailparser-mit, which is a fork of the more popular nodemailer/mailparser。
主线 mailparser
已经切换回 MIT 许可证,并且 mailparser-mit
分支在撰写本文时已经两年没有更新了。
这是一个从 mailparser
包中开始使用较低级别 MailParser
class 的示例:
const {MailParser} = require('mailparser') // v3.0.1
const {createReadStream} = require('fs')
const parseEmail = async (readableStream) =>
new Promise((resolve, reject) =>
readableStream
.pipe(new MailParser())
.on('headers', (headers) => console.log('headers', headers))
.on('data', (data) => console.log('data', data))
.on('error', reject)
.on('end', resolve),
)
parseEmail(createReadStream('emails/test1.eml'))