我一直在探索haraka(http://haraka.github.io),我已成功将其安装在我的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"}
如您所见,正文包含空值。
答案 0 :(得分:2)
对我来说这很有用
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();
}
答案 1 :(得分:1)
您可以使用以下代码检索电子邮件正文
connection.transaction.body.body_text_encoded
connection.transaction.body.bodytext
它的代码很容易理解。你可以阅读并按照你的意思去做。
答案 2 :(得分:1)
似乎需要在数据到达之前设置transaction.parse_body - 所以在“数据”中这样做。 hook(在DATA命令中调用)或更早版本:
exports.hook_data = function (next, connection) {
connection.transaction.parse_body = true;
next();
}
然后你可以从' data_post'中读取正文。 (在数据结束标记处调用)hook:
exports.hook_data_post = function (next, connection) {
this.loginfo(connection.transaction.body.bodytext);
next();
}