Ich habe mich mit Google Oauth eingerichtet. Ich habe in das Feld accessToken
eingefügt, was von der Anmeldung mit Google zurückgegeben wurde. Ich komme nicht über diesen Fehler { [Error: unauthorized_client] code: 'EAUTH' }
.
var express = require('express'),
nodemailer = require('nodemailer'),
xoauth2 = require('xoauth2'),
router = express.Router();
// create reusable transporter object using the default SMTP transport
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
xoauth2: xoauth2.createXOAuth2Generator({
user: "[email protected]",
clientId: '925......4cui6indku1jgr7g7kpg6.apps.googleusercontent.com',
clientSecret: "Y1l..........N7xkKd1x",
refreshToken: "1/LFVq94wxy6uWMP............QqEWxIgOrJDtdun6zK6XiATCKT",
accessToken: 'eyJ0eXAiOiJKV....................Zxd4uAPJlZqAdJwcHO3prmVSOtTo4PvEXkzhFJJo'
})
}
});
/*
|--------------------------------------------------------------------------
| POST /sendEmails
|--------------------------------------------------------------------------
*/
router.post('/sendToList', function(req, res){
console.log(req.body);
// setup e-mail data with unicode symbols
var mailOptions = {
from: '[email protected]', // sender address
to: '[email protected], [email protected]', // list of receivers
subject: 'Hello ✔', // Subject line
text: 'Hello world 🐴', // plaintext body
html: '<b>Hello world 🐴</b>' // html body
};
// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
if(error){
return console.log(error);
}
console.log('Message sent: ' + info.response);
});
});
module.exports = router;
Kann hier nicht viel helfen, Gmail ist wirklich wählerisch. Manchmal muss der Client erneut autorisiert werden, manchmal fehlt der richtige Bereich ( "https://mail.google.com/"
). Nodemailer gibt das Zugriffstoken einfach unverändert an Gmail weiter oder generiert das nächste mithilfe des Aktualisierungstokens, ändert jedoch keine Berechtigungen usw.
Gemischter Segen, froh, dass Google Mail eine so gute Sicherheit bietet, aber eine Qual für Entwickler!
Hallo @connor11528 hast du das Problem
Für alle, die Probleme mit "unauthorized_client" haben, gilt Folgendes:
Verwenden eines Dienstkontos
Haben Sie ein Google Suite-Konto angehängt
Habe alle 2-Bein-Anweisungen befolgt unter: https://nodemailer.com/smtp/oauth2/#oauth -2lo
Ich habe es endlich nach der Dokumentation hier gelöst: https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority
Im Wesentlichen geht es
https://admin.google.com/ yourgsuitedomain.com /ManageOauthClients
Hinzufügen einer Client-ID (aus dem Dienstkonto) und eines Bereichs: https://mail.google.com/ (letzter Schrägstrich wichtig)
Danach funktionierten E-Mails.
@AdamCraven
Vielen Dank für die obige Nachricht.
Ich habe Probleme mit der OAuth-Methode 2LO
zum Senden von Google Mail über den Nodemailer behoben. (die weniger sicheren und 3LO
Methoden funktionieren, aber für die einfachste Replikation versuche ich, die 2LO
Methode zum Laufen zu bringen)
Mir ist aufgefallen, dass Sie ein G Suite-Konto angehängt haben - meine Einrichtung erfolgt über Firebase (und ich führe den Nodemailer-Code in Firebase Cloud Functions mit einem Dienstkonto aus, das mit einem Firebase-Projekt verbunden ist) und frage mich, ob meine Probleme darauf zurückzuführen sind Ich habe kein G Suite-Konto.
Vielen Dank für zusätzliche Informationen, die Sie haben könnten!
Ich konnte versuchen, mich für die G Suite für die Domain anzumelden, die mit unserem Firebase-Webprojekt verknüpft ist, und das scheint das Problem zu lösen.
Danke nochmal für den Tipp oben!
Hilfreichster Kommentar
Für alle, die Probleme mit "unauthorized_client" haben, gilt Folgendes:
Verwenden eines Dienstkontos
Haben Sie ein Google Suite-Konto angehängt
Habe alle 2-Bein-Anweisungen befolgt unter: https://nodemailer.com/smtp/oauth2/#oauth -2lo
Ich habe es endlich nach der Dokumentation hier gelöst: https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority
Im Wesentlichen geht es
https://admin.google.com/ yourgsuitedomain.com /ManageOauthClients
Hinzufügen einer Client-ID (aus dem Dienstkonto) und eines Bereichs: https://mail.google.com/ (letzter Schrägstrich wichtig)
Danach funktionierten E-Mails.