Javascript 如何解析Haraka上的电子邮件?

Javascript 如何解析Haraka上的电子邮件?,javascript,node.js,email,smtp,mail-server,Javascript,Node.js,Email,Smtp,Mail Server,我一直在探索haraka,并成功地将它安装在我的linux机器上。我想知道是否有一个关于使用haraka解析电子邮件元标题和内容体的好教程。我查阅了他们的手册,但找不到。如有任何关于如何做到这一点的想法/建议,将不胜感激。谢谢 以下是我检索电子邮件正文的脚本: var winston = require('winston'); exports.hook_data = function (next, connection) { winston.log('info', '----------

我一直在探索haraka,并成功地将它安装在我的linux机器上。我想知道是否有一个关于使用haraka解析电子邮件元标题和内容体的好教程。我查阅了他们的手册,但找不到。如有任何关于如何做到这一点的想法/建议,将不胜感激。谢谢

以下是我检索电子邮件正文的脚本:

var winston = require('winston');
exports.hook_data = function (next, connection) {
    winston.log('info', '----------------------------------------');
    winston.log('info', 'hook_data');
    // enable mail body parsing
    connection.transaction.parse_body = true;
    winston.log('info', "body="+connection.transaction.body);
    winston.log('info', "mail_from="+connection.transaction.mail_from);
    next();
}
输出:

{"level":"info","message":"----------------------------------------","timestamp":"2015-01-12T07:16:28.216Z"}
{"level":"info","message":"hook_data","timestamp":"2015-01-12T07:16:28.217Z"}
{"level":"info","message":"body=null","timestamp":"2015-01-12T07:16:28.218Z"}
{"level":"info","message":"mail_from=myemail@hostname.com","timestamp":"2015-01-12T07:16:28.218Z"}

如您所见,正文包含空值。

您可以使用以下代码检索电子邮件正文

connection.transaction.body.body_text_encoded
connection.transaction.body.bodytext

它的代码很容易理解。您可以阅读它并根据自己的要求执行。

您可以使用以下代码检索电子邮件正文

connection.transaction.body.body_text_encoded
connection.transaction.body.bodytext

它的代码很容易理解。您可以阅读它并根据自己的要求进行操作。

似乎需要在数据到达之前设置transaction.parse_body,因此在data命令调用的“data”钩子中或更早的版本中进行设置:

exports.hook_data = function (next, connection) {
    connection.transaction.parse_body = true;
    next();
}
然后,您可以从数据标记钩子末尾调用的“data_post”读取正文:

exports.hook_data_post = function (next, connection) {
    this.loginfo(connection.transaction.body.bodytext);
    next();
}

似乎需要在数据到达之前设置transaction.parse_body,在data命令调用的“data”钩子中,或更早的版本中:

exports.hook_data = function (next, connection) {
    connection.transaction.parse_body = true;
    next();
}
然后,您可以从数据标记钩子末尾调用的“data_post”读取正文:

exports.hook_data_post = function (next, connection) {
    this.loginfo(connection.transaction.body.bodytext);
    next();
}
对我来说这很有效

connection.transaction.body.children[1].bodytext
对我来说这很有效

connection.transaction.body.children[1].bodytext