首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解析原中的电子邮件?

如何解析原中的电子邮件?
EN

Stack Overflow用户
提问于 2015-01-12 07:24:24
回答 3查看 1.3K关注 0票数 2

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

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

代码语言:javascript
复制
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();
}

产出:

代码语言:javascript
复制
{"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"}

如您所见,主体包含一个空值。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-14 08:57:14

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

代码语言:javascript
复制
connection.transaction.body.body_text_encoded
connection.transaction.body.bodytext

它的代码很容易理解。你可以按照你的想法去读和做。

票数 1
EN

Stack Overflow用户

发布于 2016-02-22 08:04:37

对我来说这起作用了

代码语言:javascript
复制
connection.transaction.body.children[1].bodytext
代码语言:javascript
复制
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();
}
票数 3
EN

Stack Overflow用户

发布于 2016-01-01 15:38:22

似乎需要在数据到达之前设置transaction.parse_body --在“数据”钩子(在data命令下调用)中也是如此,或者更早:

代码语言:javascript
复制
exports.hook_data = function (next, connection) {
    connection.transaction.parse_body = true;
    next();
}

然后,您可以从'data_post‘(在数据结束标记处调用)挂钩读取主体:

代码语言:javascript
复制
exports.hook_data_post = function (next, connection) {
    this.loginfo(connection.transaction.body.bodytext);
    next();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27897112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档