2015-01-12 3 views
1

Ive изучал хараку (http://haraka.github.io) и Ive успешно установил его на моей машине 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":"[email protected]","timestamp":"2015-01-12T07:16:28.218Z"} 

Как вы можете видеть, что тело содержит нулевое значение.

ответ

1

Вы можете получить по электронной почте, используя тело ниже код

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

Это код легко понять. Вы можете прочитать его и сделать согласно вам.

1

кажется transaction.parse_body должен быть установлен до того, как данные прибыли - так что, что в крюке «данные» (названный по команде 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(); 
} 
1

Для меня это работало

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(); 
} 
Смежные вопросы