当我尝试在本地发送电子邮件时,它可以正常工作,但在生产环境中,在网络选项卡中,我可以正确地处理所有问题,只是电子邮件不想发送,而且我没有收到任何错误。
try {
const { name, email, message } = req.body;
const transporter = nodemailer.createTransport({
port: 465,
host: "smtp.gmail.com",
auth: {
user: process.env.NEXT_PUBLIC_GMAIL_EMAIL,
pass: process.env.NEXT_PUBLIC_GMAIL_PASSWORD,
},
secure: true,
});
const mailData = {
from: process.env.NEXT_PUBLIC_GMAIL_EMAIL,
to: process.env.NEXT_PUBLIC_EMAIL_WHICH_RECIEVES_CONTACT_INFO,
subject: `Message From ${email}`,
text: message,
};
transporter.sendMail(mailData, function (err, info) {
if (err) console.log(err);
else console.log(info);
});
res.status(200).json({ message: "Email sent" });
} catch (error: any) {
res.status(500).json({ message: error.message });
}
字符串
1条答案
按热度按时间6yt4nkrj1#
我在使用nodemailer和Next.js时遇到了类似的问题,尝试将
transporter
Package 在Promise中,希望它也能为您工作:字符串
解释:由于serveless函数的性质,我们必须
await
才能在继续之前发送电子邮件。如果我们不这样做,serveless函数将在发送电子邮件之前结束(因为它是短暂的)然而,你应该注意到,这个解决方案是好的发送几封电子邮件,如果你打算批量发送电子邮件,你最好使用一个专用的电子邮件服务,如sendgrid