问题描述
我尝试了很多对这里其他人有用的解决方案,但我已经解决了几天,仍然不知所措。出于某种原因,通过 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));
});
以下是我尝试过的主要解决方案:
- https://myaccount.google.com/lesssecureapps
- https://accounts.google.com/b/0/displayunlockcaptcha
- 之前也在 auth 上方添加了“端口:465”和“主机:”smtp.gmail.com””行,但这是行不通的。
- 如果有帮助,这里是我遵循的 nodemailer 设置教程视频:https://youtu.be/-rcRf7yswfM
有什么想法吗?感谢阅读。
编辑:此外,无论我做什么,我都没有收到任何错误消息。首先,我对这方面比较陌生。
编辑*:我尝试通过谷歌云 SDK(?) 上的网络服务器发送电子邮件,结果出现了:
错误:未设置刷新令牌。这对我来说没有太大意义。
也在那里看到了我不明白的:
错误 [ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置标头
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)