0
我想使用Nodemailer 3,GMail API惠普OAuth2認證使一個簡單的郵件發件人。Nodemailer惠通GMail SMTP OAuth2認證讓我'無效的狀態代碼401'
這裏是我的腳本:
var serverConfig = {
gmail: {
client_user : '[email protected]',
client_id : '349...myClientId',
secret : 'mysecret..123jd123',
refresh_token : 'x/xxxxxxxxxxxxxx-reZuEMeSuJaSERmCVY',
access_token : 'xxxxxxxxxxxxxxxxx',
expires: '3599'
}
}
// 3LO authentication https://nodemailer.com/smtp/oauth2/#example-3
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
type: 'OAuth2',
user: serverConfig.gmail.client_user,
clientId: serverConfig.gmail.client_id,
clientSecret: serverConfig.gmail.secret,
refreshToken: serverConfig.gmail.refresh_token
},
});
module.exports = {
"send": function(_from,_to,_subject,_html,_text){
// setup email data with unicode symbols
var mailOptions = {
from: _from,
to: _to, // list of receivers
subject: _subject, // Subject line
html: _html, // html body
text: _text // plain text body
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
return console.log(error);
}
console.log('Message ' + info.messageId + ' sent: %s' + info.response);
})
}
}
當我迫使auth對象的的access_token,電子郵件是沒有任何問題發送。但是,當我不指定access_token
,只有德refresh_token
,我得到這個錯誤:
{ Error: Invalid status code 401
at ClientRequest.req.on.res (/myproject/node_modules/nodemailer/lib/fetch/index.js:193:23)
at emitOne (events.js:96:13)
at ClientRequest.emit (events.js:188:7)
at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:474:21)
at HTTPParser.parserOnHeadersComplete (_http_common.js:99:23)
at TLSSocket.socketOnData (_http_client.js:363:20)
at emitOne (events.js:96:13)
at TLSSocket.emit (events.js:188:7)
at readableAddChunk (_stream_readable.js:176:18)
at TLSSocket.Readable.push (_stream_readable.js:134:10)
type: 'FETCH',
sourceUrl: 'https://accounts.google.com/o/oauth2/token',
code: 'EAUTH',
command: 'AUTH XOAUTH2' }
我做了一個[在Stack Overflowespañol中的這個問題的副本](http://es.stackoverflow.com/questions/54470/nodemailer-con-gmail-smtp-y-autenticaci %C3%B3n-oauth2-me-devuelve-invalid-status-cod?noredirect = 1#comment97072_54470) –
你知道嗎?有同樣的問題。我也不知道如何獲得'refreshToken'。這不是在迴應中發送的嗎? – ironicaldiction
不是。我決定使用簡單的SMPT認證。 –