我正在使用 react、express 和 nodemailer 构建邮件表单,但我遇到了问题。如何设置oauth2?我有一些
错误:invalid_grant
这是我的代码:
async function main2() {
const output = `Some output text...`;
// create reusable transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
host: 'mail.google.com',
port: 465,
secure: true, // true for 465, false for other ports
auth: {
type: 'OAuth2',
clientId: 'clientID here',
clientSecret: 'clientSecret here',
refreshToken: 'refreshToken here',
accessToken: 'accessToken here',
expires: number
},
tls: {
rejectUnauthorized: false
}
});
// send mail with defined transport object
let info = await transporter.sendMail({
to: {
name: 'Me',
address: `${req.body.email}`
},
auth: {
user: 'mymail@gmail.com',
},
subject: 'Hello',
html: output // html body
});
console.log('Message sent: %s', info.messageId);
// Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>
// Message sent to:...
console.log(`Message sent to: ${req.body.email}`)
// Preview only available when sending through an Ethereal account
console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info));
// Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
}
main2().catch(console.error);
})
我收到了这个错误,我不知道我错过了什么。
我是 nodemailer 和 express 的新手,我们将不胜感激。
{ Error: invalid_grant
at postRequest (path/node_modules/nodemailer/lib/xoauth2/index.js:259:33)
at PassThrough.req.once (path/node_modules/nodemailer/lib/xoauth2/index.js:328:20)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:111:20)
at PassThrough.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1064:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9) code: 'EAUTH', command: 'AUTH XOAUTH2' }