【发布时间】:2018-01-21 18:01:28
【问题描述】:
我目前有一个使用来自 gmail 的 nodemailer 发送电子邮件的设置。当我手动创建访问令牌(仅持续约 1 小时)时,它可以正常工作。但是,在那一小时过去后,我收到以下错误。请注意,在那一小时内,我可以正常发送电子邮件并且一切正常。
{ Error: Can't create new access token for user
at XOAuth2.generateToken (C:\Users\user\My-Projects\***\node_modules\nodemailer\lib\xoauth2\index.js:162:33)
at XOAuth2.getToken (C:\Users\user\My-Projects\***\node_modules\nodemailer\lib\xoauth2\index.js:111:18)
at SMTPConnection._handleXOauth2Token (C:\Users\user\My-Projects\***\node_modules\nodemailer\lib\smtp-connection\index.js:1421:27)
at Immediate.setImmediate (C:\Users\user\My-Projects\***\node_modules\nodemailer\lib\smtp-connection\index.js:1239:45)
at runCallback (timers.js:666:20)
at tryOnImmediate (timers.js:639:5)
at processImmediate [as _immediateCallback] (timers.js:611:5) code: 'EAUTH', command: 'AUTH XOAUTH2' }
我用来发送电子邮件的代码是:
var emailMsg = `Name: ${name}\nEmail: ${email}\n\nMessage:\n${msg}`;
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
type: 'OAuth2',
user: process.env.GMAIL_ACC,
clientId: process.env.GMAIL_CLIENTID,
clientSecret: process.env.GMAIL_CLIENTSECRET,
refreshToken: process.env.GMAIL_RFRESHTOKEN,
accessToken: process.env.GMAIL_ACCESSTOKEN
}
});
var mailOptions = {
from: process.env.GMAIL_ACC,
to: process.env.GMAIL_ACC,
subject: `Contact Form - ${name}`,
text: emailMsg
};
transporter.sendMail(mailOptions,
function(mailErr, mailRes) {
if(mailErr) {
//Mail was unable to send
sendResponse(418, false, [{'email': 'Server was unable to send email.'}]);
console.log('Mail Error:\n ', mailErr);
} else {
//Everything worked correctly. (As far as responses go)
sendResponse(200, true);
}
}
);
我尝试过的事情: - 允许不太安全的应用程序(似乎没有任何影响) - 禁用杀毒软件(这原本是一个无关的问题) - 创建一个新的应用程序和一组令牌(这有 0 影响)
任何帮助将不胜感激,谢谢!
【问题讨论】:
标签: node.js email gmail google-oauth