NodeMailer - 没有收件人定义错误

NodeMailer - No recipients defined error

我正在尝试使用 Node 邮件程序发送电子邮件。我的设置如下。收件人来自 Mongoose 模型。在模型 Rentals.createdbyemail 中包含用户的电子邮件地址。我已经仔细检查以确保电子邮件地址包含在 Rentals.createdbyemail 中并且确实如此。

出于某种原因,当此代码运行时出现错误:

Error: No recipients defined

我将如何更改我的代码以更正此错误?谢谢你的帮助!
注意:如果我只在 "to" 字段中输入电子邮件地址,它就会起作用。

 var smtpTrans = nodemailer.createTransport({
       service: 'Gmail',
        auth: {
            user: 'myemail@gmail.com',
            pass: 'password'
        }
      });
      var mailOptions = {
        to: Rentals.createdbyemail,
        from: 'email',
        subject: 'subject',
        text: 'This is the email content'
      };
      smtpTrans.sendMail(mailOptions, function(err) {
        console.log('email sent')

        if (err){
        console.log(err)
        }
      });

收件人来自猫鼬模型:

var rentalsSchema = new mongoose.Schema({
   reserved: {type: Boolean, default: false},
   createdby: String,
   createdbyemail: String,
   reservedby: String,
   reservedemail: String,
   author: {
      id:{
       type: mongoose.Schema.Types.ObjectId,
       ref: "User"
      },
       username: String,
       email: String
   },

module.exports = mongoose.model("Rentals", rentalsSchema);

在您的代码中缺少分配收件人电子邮件地址,因为您使用了 Rentals.createdbyemail 这不是有效的分配方式。所以你应该从数据库中检索 createdbyemail 然后使用检索电子邮件。

我不知道你想从哪里发送电子邮件(意味着哪个功能或如何从数据库中检索)。所以我展示了如何检索和发送电子邮件

赞:

Rentals table

中检索电子邮件
// {field: value} to get specific Rental
Rentals.findOne({field: value}, function(err, rental) {
 if(rental) {
   var smtpTrans = nodemailer.createTransport({
       service: 'Gmail',
        auth: {
            user: 'myemail@gmail.com',
            pass: 'password'
        }
      });
      var mailOptions = {
        to: rental.createdbyemail,
        from: 'email',
        subject: 'subject',
        text: 'This is the email content'
      };
      smtpTrans.sendMail(mailOptions, function(err) {
        console.log('email sent')

        if (err){
        console.log(err)
        } else {
           return from here 
        }
      });
 }
});