nodemailer 电子邮件未发送且未记录错误
nodemailer email not sent and no errors logged
我正在尝试使用 nodemailer 发送电子邮件,但它没有发送任何电子邮件,奇怪的是它也没有记录任何错误。
这是我的路线代码:
router.post("/form", async (req, res) => {
try {
let { name, email, password } = req.body;
let user = await User.create({
name,
email,
password,
});
if (!user) return res.status(501).send("Something went wrong");
let token = await user.getSignedToken();
try {
user.emailToken = await user.verifyEmail();
} catch (ex) {
console.log(ex);
}
try {
await user.save({ validateBeforeSave: false });
} catch (ex) {
console.log(ex);
}
const options = {
expires: new Date(
Date.now() + process.env.JWT_COOKIE_EXPIRE * 24 * 60 * 60 * 1000
),
};
var smtpTransport = nodemailer.createTransport({
service: "Gmail",
auth: {
user: "myEmail",
pass: "myPass",
},
});
var mailOptions = {
from: "myEmail",
to: req.body.email,
subject: "Verify Email Token",
text: `go to the below link\nhttp://localhost:3000/verifyEmail/${emailToken}`,
};
smtpTransport.sendMail(mailOptions, function (error, info) {
if (error) {
console.log(error);
} else {
console.log("Email sent: " + info.response);
}
});
res.cookie("token", token, options);
res.send("Check email for activation");
} catch (ex) {
res.send(ex);
}
});
所以,它没有发送任何电子邮件,之后,res.cookie 和 res.send 行也不起作用。但是,服务器没有记录任何 error/exceptions。那么,可能是什么问题?我在另一条路线中使用了 nodemailer(与此路线具有相同的 gmail 帐户)并且它正在运行。那么,这里的代码无法正常工作可能是什么问题?
在 mailoptions 对象中,您正在使用 emailToken 并且从未定义该变量。相反,您可能想使用 user.emailToken
我正在尝试使用 nodemailer 发送电子邮件,但它没有发送任何电子邮件,奇怪的是它也没有记录任何错误。
这是我的路线代码:
router.post("/form", async (req, res) => {
try {
let { name, email, password } = req.body;
let user = await User.create({
name,
email,
password,
});
if (!user) return res.status(501).send("Something went wrong");
let token = await user.getSignedToken();
try {
user.emailToken = await user.verifyEmail();
} catch (ex) {
console.log(ex);
}
try {
await user.save({ validateBeforeSave: false });
} catch (ex) {
console.log(ex);
}
const options = {
expires: new Date(
Date.now() + process.env.JWT_COOKIE_EXPIRE * 24 * 60 * 60 * 1000
),
};
var smtpTransport = nodemailer.createTransport({
service: "Gmail",
auth: {
user: "myEmail",
pass: "myPass",
},
});
var mailOptions = {
from: "myEmail",
to: req.body.email,
subject: "Verify Email Token",
text: `go to the below link\nhttp://localhost:3000/verifyEmail/${emailToken}`,
};
smtpTransport.sendMail(mailOptions, function (error, info) {
if (error) {
console.log(error);
} else {
console.log("Email sent: " + info.response);
}
});
res.cookie("token", token, options);
res.send("Check email for activation");
} catch (ex) {
res.send(ex);
}
});
所以,它没有发送任何电子邮件,之后,res.cookie 和 res.send 行也不起作用。但是,服务器没有记录任何 error/exceptions。那么,可能是什么问题?我在另一条路线中使用了 nodemailer(与此路线具有相同的 gmail 帐户)并且它正在运行。那么,这里的代码无法正常工作可能是什么问题?
在 mailoptions 对象中,您正在使用 emailToken 并且从未定义该变量。相反,您可能想使用 user.emailToken