Nodemailer 和 Oauth2 无法在生产环境中运行

Nodemailer and Oauth2 not working in production

   const nodemailer = require("nodemailer");
    const { google } = require("googleapis");

    const oAuth2Client = new google.auth.OAuth2(
        process.env.GOOGLE_CLIENT_ID,
        process.env.GOOGLE_CLIENT_SECRET,
        "https://developers.google.com/oauthplayground"
    );
    oAuth2Client.setCredentials({refresh_token: process.env.GOOGLE_REFRESH_TOKEN});

    module.exports.sendMail = async (mailOptions) => {
       try {
           const accessToken = await oAuth2Client.getAccessToken();
           const transport = nodemailer.createTransport({
           service: "gmail",
           auth: {
              type: "OAuth2",
              user: process.env.GMAIL_ADDRESS,
              clientId: process.env.GOOGLE_CLIENT_ID,
              clientSecret: process.env.GOOGLE_CLIENT_SECRET,
              refreshToken: process.env.GOOGLE_REFRESH_TOKEN,
              accessToken: accessToken
           }
       });

    await transport.sendMail(mailOptions);

    sendMail()
      .then(() => console.log("Email sent!"))
      .catch((error) => console.log("Email NOT sent! " + error.message));
  } catch (error) {
    return error;
  }
}; 

您好!这是使用 google 进行身份验证的代码,然后在调用 sendEmail 函数的任何地方发送电子邮件。一切在本地都能顺利进行,但在生产中却不行。我不知道我做错了什么。谢谢你的帮助。

最好将 SendGrid 作为一项服务使用,因为您需要它用于生产(100 emails/day 免费),以确保电子邮件交付,他们有一个合理的免费计划。而且安装非常简单。

调试最好使用 mailtrap(免费)。