如何parsingHaraka上的电子邮件?

我一直在探索哈拉卡( http://haraka.github.io ),我成功地将其安装在我的Linux机器上。 我想知道是否有一个很好的教程parsing电子邮件元标题和内容使用哈拉卡。 我检查他们的手册,但我无法find它。 任何想法/build议如何做到这一点将不胜感激。 谢谢。

这是我的脚本来检索电子邮件正文:

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 

它的代码很容易理解。 你可以阅读,并根据你的。

看来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 
 exports.hook_data = function (next, connection) { connection.transaction.parse_body = true; this.loginfo("connection.transaction.parse_body"); next(); } exports.hook_data_post = function (next, connection) { this.loginfo("connection.transaction.body.bodytext"); this.loginfo(connection.transaction.body.children[1].bodytext); next(); }