我在通过 Nodemailer 向客户发送电子邮件时遇到问题。我正在使用带有 cpanel 的共享主机。当它从其他主机发送电子邮件时,它不会从中发送电子邮件。
这是我的代码中发送电子邮件的函数。
const transporter = mailer.createTransport({
service: "gmail",
auth: {
user: process.env.MAIL,
pass: process.env.MAIL_PASS,
},
});
app.post("/send", (req, res) => {
const data = {
name: req.body.name,
mail: req.body.mail,
phone: req.body.phone,
msg: req.body.msg,
title: "new message form contact section",
};
if (data.phone.length == 0) {
data["phone"] = "not given!";
}
ejs.renderFile("./views/mail.ejs", data, function (err, ejsout) {
transporter.sendMail({
from: process.env.MAIL,
to: "***********@gmail.com",
subject: "Support request 👮♂️",
html: ejsout,
});
res.render("msg", { msg: "Message was send successfully!" });
});
});
此外,我还检查了我的应用程序是否可以访问 .env 文件并读取它。它可能有效。我尝试重新启动应用程序,问题仍然存在。
我应该使用另一个 Node js 库吗?
编辑 我已将我的代码更新为该代码,并且在使用渲染托管时它给了我错误消息,它向我发送了成功的消息。
ejs.renderFile("./views/mail.ejs", data, async function (err, ejsout) {
await new Promise((resolve, reject) => {
transporter.sendMail(
{
from: process.env.MAIL,
to: "*********@gmail.com",
subject: "Support request 👮♂️",
html: ejsout,
},
(err, info) => {
if (err) {
res.render("msg", {
msg: "Error there is a problem sending your message! Please Contact us via Email.",
});
} else {
res.render("msg", { msg: "Message was send successfully!" });
}
}
);
});
});
请勿使用 Gmail,而应使用您的主机电子邮件地址。
您可以通过导航电子邮件在 cPanel 中轻松获取电子邮件地址设置,然后使用电子邮件、密码、SMTP、主机。