Gmail-API für das versenden von E-mails in Node.js

Haftungsausschluss:

  • Ich habe die Google-eigenen Node.js quickstart guide und erfolgreich eine Verbindung herstellen und verwenden Sie die gmail.users.labels.list() Funktionalität.
  • Ich habe für die Fragen/Antworten hier, wie diese eine (das ist nicht mit der Node.js API bin ich zu Fragen), oder diese eine (ähnlich diese eine), die augenscheinlich das gleiche problem habe ich auch aber die Lösung funktioniert nicht.

Mein problem:

Bei der Verwendung Google Node.js API ich bekomme einen Fehler beim Versuch zu senden eine E-Mail. Der Fehler ist:

{
    "code": 403,
    "errors": [{
        "domain": "global",
        "reason": "insufficientPermissions",
        "message": "Insufficient Permission"
    }]
}

Mein setup:

fs.readFile(secretlocation, function processClientSecrets(err, content) {
    if (err) {
        console.log('Error loading client secret file: ' + err);
        return;
    }
    authorize(JSON.parse(content), sendMessage);
});

function sendMessage(auth) {
    var raw = makeBody('[email protected]', '[email protected]', 'subject', 'message test');
    gmail.users.messages.send({
        auth: auth,
        userId: 'me',
        message: {
            raw: raw
        }
    }, function(err, response) {
        res.send(err || response)
    });
}

Die Funktion processClientSecrets ist aus dem Google-Anleitung, die ich oben erwähnt. Es liest meine .json - Datei, das hat mein access_token und refresh_token. Die makeBody - Funktion ist, um eine codierte Textteil.

In der config variabels habe ich auch:

var SCOPES = [
    'https://mail.google.com/',
    'https://www.googleapis.com/auth/gmail.modify',
    'https://www.googleapis.com/auth/gmail.compose',
    'https://www.googleapis.com/auth/gmail.send'
];

, Warum es funktionieren sollte:

  • der Autorisierungs-Prozess funktioniert für die gmail.users.labels.list() Methode.
  • den Nachrichtentext ich Teste funktioniert, wenn ich test es bei Google-test-Seite.

Meine Frage:

Ist mein setup falsch? Gab es änderungen in der API? Was bin ich?

  • Stellen Sie sicher, dass Sie die erforderliche Bereiche berechtigt: developers.google.com/gmail/api/v1/reference/users/messages/...
  • Ich, aber immer noch nicht funktioniert, danke für den Hinweis. Ich hatte es auch zum testen in die Google-tool. Derzeit habe ich diese Auth-Bereiche statt: https://mail.google.com/, gmail.compose, gmail.modify, gmail.send
  • Gehen Sie zu der Oauth-Spielplatz, Autorisierung der Gmail-Bereiche, und nehmen Sie die access token und refresh token und setzen Sie diese in Ihre .json-Datei. Haben Sie immer noch eine Fehlermeldung angezeigt?
  • vielen Dank für die überprüfung dieses heraus. Tat Schritt, die Sie vorgeschlagen, und jetzt ist der Fehler anders aus: {"code":400,"errors":[{"domain":"global","reason":"invalidArgument","message":"'raw' RFC822 payload message string or uploading message via /upload/* URL required"}]}
  • Hmm, das ist ärgerlich. Haben Sie versucht, die raw-string url-safe (ersetzen Sie alle + mit - und alle / mit _)?
  • Verdammt 🙁 Dann weiß ich nicht. Hoffentlich jemand anderes kann chime in.
  • gefunden zu meinem problem(en). Vielen Dank für die überprüfung dieses!
  • Super!!! Kein problem. 🙂

InformationsquelleAutor Sergio | 2015-12-31
Schreibe einen Kommentar