我正在尝试使用Node mailer发送电子邮件。我的设置如下。收件人来自Mongoose模型。在Model Rentals.createdbyemail中包含用户的电子邮件地址。我已经仔细检查以确保电子邮件地址包含在Rentals.createdbyemail中,并且确实如此。
由于某些原因,当此代码运行时,我收到错误:
Error: No recipients defined
如何更改代码以更正此错误?谢谢你的帮助!
注意:如果我只输入“收件人”字段的电子邮件地址,则此功能正常。
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);
答案 0 :(得分:1)
在您的代码中缺少分配收件人电子邮件,因为您使用了Rentals.createdbyemail
这不是一种有效的分配方式。因此,您应该从数据库中检索createdbyemail
,然后使用检索电子邮件。
我不知道您要从哪里发送电子邮件(表示从哪个功能或如何从数据库中检索)。所以我正在展示如何检索和发送电子邮件
像:
从Rentals
表
// {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
}
});
}
});