2016-04-16 13 views
1

Ich versuche, E-Mail mit Gmail API in Javascript zu senden, aber ich bekomme 401 Fehler (Anmeldung erforderlich). Meine Anwendung ist bereits autorisiert, ich habe ein Zugriffs-Token.Wie wird die Autorisierung für das Senden von E-Mails über Gmail API in Javascript festgelegt?

Das ist mein Stück Code, das ich zu laufen versuche:

gapi.client.load('gmail', 'v1', 
var email = ''{my mail content}; 

var sendRequest = gapi.client.gmail.users.messages.send({ 
'userId': 'me', 
'resource': { 
    'raw': window.btoa(email).replace(/\+/g, '-').replace(/\//g, '_') 
} 

}); 
return sendRequest.execute(callback); 
}); 

Bitte helfen Sie mir, was zu tun? Danke im Voraus.

+0

Haben Sie ihre API-Dokumentation gelesen? – evolutionxbox

+0

Ja, ich habe gelesen. Ich kann jedoch keine geeignete Lösung finden, um das Zugriffstoken mit meinem Aufruf zur Autorisierung des Google Mail-API-Aufrufs zu senden. – Aanchal

+0

Machst du das auf dem Back-End mit Nodejs oder auf dem Front-End? – Tholle

Antwort

1

In Anbetracht der Tatsache, dass Sie die Nachricht vom Frontend senden, müssen Sie nicht wirklich die Client-Bibliothek verwenden. Sie könnten nur verwenden JQuery oder etwas ähnliches:

// You can test with your own account by getting a token here: 
// https://developers.google.com/oauthplayground/ 
var accessToken = 'ya29...'; 
// Base64-encode the mail and make it URL-safe 
// (replace all '+' with '-' and all '/' with '_') 
var encodedMail = btoa([ 
    'From: [email protected]\r\n', 
    'To: [email protected]\r\n', 
    'Subject: Subject Text\r\n\r\n', 

    'Message Text' 
].join('')).replace(/\+/g, '-').replace(/\//g, '_'); 

$.ajax({ 
    method: 'POST', 
    url: 'https://www.googleapis.com/gmail/v1/users/me/messages/send', 
    headers: { 
    'Authorization': 'Bearer ' + accessToken, 
    'Content-Type': 'application/json' 
    }, 
    data: JSON.stringify({ 
    'raw': encodedMail 
    }) 
}); 

Sie können einfach eine Mail kodieren und versuchen, es in der API explorer zuerst.

+0

es ist F9 mit Klartext was ist, wenn ich HTML-Code innerhalb der E-Mail senden möchte, so dass es mit besser ui kommen wird. –

+0

@ShubhamNigam Sie können [diese Antwort] (http://stackoverflow.com/questions/34165219/send-html-email-with-plain-text-fallback-via-gmail-api) überprüfen, um zu sehen, wie Sie geben können ein einfacher Text und eine HTML-Textalternative. Wenn Sie Browserify verwenden, können Sie ein [kleines Abhängigkeits-freies Modul] (https://www.npmjs.com/package/gmail-api-create-message-body) verwenden, das ich vor einer Weile geschrieben habe, oder Sie können es lesen der Code, um etwas Inspiration zu bekommen. – Tholle