Haraka Smtp Server(编辑出站电子邮件正文内容)

时间:2016-05-30 13:11:57

标签: javascript node.js smtp html-email haraka

我正在尝试为haraka编写一个自定义插件,这是一个nodejs驱动的smtp服务器。我想在邮件主体中添加一些文字。到目前为止,这是我的代码。

var utils  = require('./utils');
var util   = require('util');
exports.hook_data = function (next, connection) 
{
    connection.transaction.parse_body = true; 
    next();
}

exports.hook_data_post = function (next,connection)
{
    var plugin = this ;
    plugin.loginfo(connection.transaction.body.bodytext);
    var pos =connection.transaction.body.bodytext.indexOf('\<\/body\>');
    connection.transaction.body.bodytext = connection.transaction.body.bodytext.splice(pos-1, 0,  '<p>add this paragraph to the existing body.</p>  \r \n');

    plugin.loginfo(connection.transaction.body.bodytext);

    next();
}

String.prototype.splice = function(idx, rem, str) 
{
    return this.slice(0, idx) + str + this.slice(idx + Math.abs(rem));
};
exports.hook_queue_outbound = function(next,connection)
{
    var plugin = this;
    plugin.loginfo(connection.transaction.body.bodytext);
    next();
}

当插件在此处运行时,它将打印到日志中。

Old Body Loginfo:

[INFO] [-] [add_some_data] <html>
    <body>
    olddata
   <p>add this paragraph to the existing body.</p>  \r
 </body>
</html>

新身体日志:

[INFO] [-] [add_some_data] <html>
    <body>
    olddata
   <p>add this paragraph to the existing body.</p>  \r
 </body>
</html>

我想知道的是为什么它没有在传出电子邮件中包含数据。

你可以看到我甚至试图将消息体记录在&#34; hook_queue_outbound&#34;稍后调用hook_post_data的钩子,我可以看到编辑的结果。但在接收端我收到旧电子邮件。 我正在做一些愚蠢的错误,如果给出指示,我将非常感激 谢谢。

1 个答案:

答案 0 :(得分:1)

好的研究员我挣扎了,我终于做到了。因为其他人可能会在将来发现它有用,所以我发布了如何实现它。在haraka add_body_filter中有一个内置帮助器我用它.. :)
欢呼声

$