云功能使用Nodemailer,电子邮件已发送但从未到达



我使用谷歌云功能通过Nodemailer发送电子邮件,邮件通过Oauth2进行身份验证。它似乎没有任何问题,电子邮件被发送,也显示在我的gmail帐户的发送电子邮件中,但实际上它们从未到达我的其他电子邮件地址。。。有人知道为什么吗?

这是我的代码

const mailTransport = nodemailer.createTransport({
name: "gmail.com",
host: "smtp.gmail.com",
port: 465,
secure: true,
auth: {
type: "OAuth2",
user: gmailEmail,
pass: gmailPassword,
clientId: clientid,
clientSecret: clientsecret,
refreshToken: clientrefreshtoken,
accessToken: clientaccesstoken,
expires: 3599,
},
});
exports.submit = functions.https.onRequest((req, res) => {
const corsMiddleware = cors(corsOptions);
corsMiddleware(req, res, () => {
if (req.method !== "POST") {
return;
}
const mailOptions = {
from: req.body.email,
replyTo: req.body.email,
to: "myemail@gmx.at",
subject: `Absender: ${req.body.email}`,
html: req.body.message,
};
mailTransport.sendMail(mailOptions);
res.status(200).send({isEmailSend: true});
});
});

提前感谢

更新!不知怎么的,我收到一些电子邮件真的很晚了,但不是所有的。更像是十分之一,我的收件箱里也有这个:

The recipient server did not accept our requests to connect. 
Learn more at https://support.google.com/mail/answer/7720 [mx00.emig.gmx.net. 212.227.15.9: 421-gmx.net (mxgmx017) 
Nemesis ESMTP Service not available 421-Service unavailable 421-Reject due to policy restrictions. 
421 For explanation visit https://postmaster.gmx.net/en/error-messages?ip=209.85.222.194&c=sp ] [mx01.emig.gmx.net. 212.227.17.5: 421-gmx.net (mxgmx114) 
Nemesis ESMTP Service not available 421-Service unavailable 421-Reject due to policy restrictions. 
421 For explanation visit https://postmaster.gmx.net/en/error-messages?ip=209.85.222.196&c=sp ]

所以经过两天的尝试,我认为问题与我的代码无关。。。。gmx服务器似乎有问题,也许我在黑名单上?我不知道,帐户实际上是新的。。。永远不要从我的域发送到我的私人电子邮件工作。

这可能不是问题的原因,但您应该等待异步sendMail()执行完成后再发送响应。如果你不这样做,你就向云功能平台表明,它可以清理运行云功能的实例,而无需等待异步任务完成。

exports.submit = functions.https.onRequest((req, res) => {
const corsMiddleware = cors(corsOptions);
corsMiddleware(req, res, () => {
if (req.method !== "POST") {
return;
}
const mailOptions = {
from: req.body.email,
replyTo: req.body.email,
to: "myemail@gmx.at",
subject: `Absender: ${req.body.email}`,
html: req.body.message,
};
mailTransport.sendMail(mailOptions)
.then(() => {
res.status(200).send({isEmailSend: true});
})

});
});

最新更新