微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决电子邮件不会在生产中发送,使用 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 举报,一经查实,本站将立刻删除。