电子邮件不会在生产中发送,使用 nodemailer、gmail如果重要的话,gcloud 主机但是本地主机很好

问题描述

我尝试了很多对这里其他人有用的解决方案,但我已经解决了几天,仍然不知所措。出于某种原因,通过 localhost 发送电子邮件可以正常工作,但是当站点处于活动状态时,它不会。这是我的代码

app.post('/contact',(req,res) => {

const CLIENT_ID = process.env.C_ID;
const CLIENT_SECRET = process.env.C_SECRET;
const REDIRECT_URI = 'https://developers.google.com/oauthplayground';
const REFRESH_TOKEN = process.env.R_TOKEN;

const oauth2client = new google.auth.OAuth2(CLIENT_ID,CLIENT_SECRET,REDIRECT_URI);

oauth2client.setCredentials({ refresh_token: REFRESH_TOKEN });

async function sendMail() {

    try {
        const accesstoken = await oauth2client.getAccesstoken();

        const transport = nodemailer.createTransport({
            service: 'gmail',auth: {
                type: 'OAuth2',user: process.env.EMAIL_USER,clientId: CLIENT_ID,clientSecret: CLIENT_SECRET,refreshToken: REFRESH_TOKEN,accesstoken: accesstoken,},});

        const mailOptions = {
            from: req.body.email,to: process.env.EMAIL_USER,subject: `Message from ${req.body.email}`,text: req.body.message
        };

        const result = await transport.sendMail(mailOptions)
        return result

    } catch (error) {
        return error
    }
}

sendMail()
    .then((result) => console.log('Email sent: ',result),res.send('success'))
    .catch((error) => console.log(error.message));

});

以下是我尝试过的主要解决方案:

有什么想法吗?感谢阅读。

编辑:此外,无论我做什么,我都没有收到任何错误消息。首先,我对这方面比较陌生。

编辑*:我尝试通过谷歌云 SDK(?) 上的网络服务器发送电子邮件,结果出现了:

错误:未设置刷新令牌。这对我来说没有太大意义。

也在那里看到了我不明白的:

错误 [ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置标头

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)