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

我正在试图写一个自定义插件haraka一个nodejs供电smtp服务器。 我想添加一些文本到mailbody。 这是我的代码到目前为止。

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(); } 

当这个插件在这里运行的时候是打印到日志里的东西。

老身材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> 

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

正如你所看到的,我甚至试图在“hook_queue_outbound”钩子的后面调用hook_post_data的方法来logging消息体,我可以看到编辑的结果。 但在接收端,我收到了旧的电子邮件。 我正在做一些愚蠢的错误,我会高度赞赏,如果给一个方向。
谢谢。

好的研究员我挣扎着,我终于做到了。 因为别人可能会发现它对未来有所帮助,所以我张贴如何实现它。 在haraka add_body_filter中有一个内build的帮手,我用它.. 🙂
干杯

 exports.hook_data = function (next, connection) { var plugin = this; connection.transaction.parse_body = true; connection.transaction.add_body_filter(/text\/(plain|html)/, function (ct, enc, buff) { var buf = buff.toString('utf-8'); var pos = buf.indexOf('\<\/body\>'); buf = buf.splice(pos-1, 0, '<p>add this paragraph to the existing body.</p>'); return new Buffer(buf); }); next(); }