I am trying to send a mail using nodemailer. I think i have given all the mailOptions correctly. As i have confirmed that by printing mailOptions to the console.
And i have also checked auth and user. They are correct and well imported.
But still i am getting no recipient defined error. Where is the problem?
Here is the entire sendEmail function
function sendEmail(payload) {
var fromEmail = config.cfg.smtp.fromEmail;
console.log(fromEmail);
var toEmail = payload.to;
var subject = payload.subject;
var content = `<p>Greetings! your order is on the way. Order details are</p>`;
let smtpTransport = nodemailer.createTransport({
service: "gmail",
auth: {
user: config.cfg.smtp.auth.user,
pass: config.cfg.smtp.auth.pass,
},
});
// setup email data with unicode symbols
let mailOptions = {
from: fromEmail, // sender address. Must be the same as authenticated user if using Gmail.
to: toEmail, // receiver
subject: subject, // subject
html: content, // html body
};
return new Promise(function (resolve, reject) {
smtpTransport.sendMail({ mailOptions }, function (err, data) {
console.log(mailOptions)
if (err) {
console.log("your mail could not be sent");
return reject(err);
}
resolve(data);
console.log("Your mail is sent");
});
});
}
CodePudding user response:
You are sending your mailOptions
inside another object. Try the following instead.
return new Promise(function (resolve, reject) {
smtpTransport.sendMail(mailOptions, function (err, data) { // mailOptions is already an object.
console.log(mailOptions)
if (err) {
console.log("your mail could not be sent");
return reject(err);
}
resolve(data);
console.log("Your mail is sent");
});