0

我正在尝试为 haraka 邮件服务器创建一个插件,以支持将电子邮件保存到 mongodb。该插件运行良好,但是当我发送测试电子邮件时,它给了我这个错误:

插件队列/mongo_email 失败:TypeError:Email.save 不是函数

这是插件代码:

var mongoose         = require('mongoose');

var mongodbUri = "mongodb://localhost:27017/";

var options = {
  useMongoClient: true,
  socketTimeoutMS: 0,
  keepAlive: true,
  reconnectTries: 30
};

var db = mongoose.connect(mongodbUri, options);

var EmailSchema = mongoose.Schema({
  emailFrom: String,
  emailMsg: String,
  emailRcv: String,
  emailSubject: String
});

var Email = mongoose.model('Email', EmailSchema);

exports.hook_queue = function(next, connection){

    var transaction   = connection.transaction;
    var receivedDate  = transaction.header.headers.date;
    var subjectLine   = transaction.header.headers.subject;

    Email.save({
      emailFrom: transaction.mail_from,
      emailMsg: transaction.data_lines,
      emailRcv: receivedDate,
      emailSubject: subjectLine
    });

    next();

}
4

1 回答 1

1

回答:

var mongoose         = require('mongoose');

var mongodbUri = "mongodb://localhost:27017/";

var options = {
  useMongoClient: true,
  socketTimeoutMS: 0,
  keepAlive: true,
  reconnectTries: 30
};

var db = mongoose.connect(mongodbUri, options);

var EmailSchema = mongoose.model('Email',{
  emailFrom: String,
  emailMsg: String,
  emailRcv: String,
  emailSubject: String
});


exports.hook_queue = function(next, connection){

    var transaction   = connection.transaction;
    var receivedDate  = transaction.header.headers.date;
    var subjectLine   = transaction.header.headers.subject;

    var Email = new EmailSchema({
      emailFrom: transaction.mail_from,
      emailMsg: transaction.data_lines,
      emailRcv: receivedDate,
      emailSubject: subjectLine
    });

    Email.save();

    next();

}

交易变量var transaction = connection.transaction;是一个包含有关新电子邮件的所有信息的对象。EmailSchema可以修改mongodb 模式以支持其他选项,例如消息头、附件等。

于 2017-11-28T19:07:29.600 回答