首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haraka Smtp服务器(编辑出站EMail正文内容)

Haraka Smtp服务器(编辑出站EMail正文内容)
EN

Stack Overflow用户
提问于 2016-05-30 21:11:57
回答 1查看 691关注 0票数 1

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

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

当插件在这里运行时,它会打印到日志中。

旧的正文日志信息:

代码语言:javascript
复制
[INFO] [-] [add_some_data] <html>
    <body>
    olddata
   <p>add this paragraph to the existing body.</p>  \r
 </body>
</html>

新建正文日志:

代码语言:javascript
复制
[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,我可以看到编辑后的结果。但在接收端,我收到了旧的电子邮件。我正在犯一些愚蠢的错误,如果给我一个方向,我将非常感激。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-05-31 18:12:44

好了,伙计们,我努力了,我终于做到了。以防将来其他人可能会发现它有帮助,所以我在这里发布我是如何完成它的。在haraka add_body_filter中有一个内置的助手,我用过它..:)

干杯

代码语言:javascript
复制
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();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37526567

复制
相关文章

相似问题

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