Я пытаюсь отправить электронное письмо от NodeJS, запущенного на сервере Linux, в HTTP API API Gmail HTTP. Не использовать библиотеки, просто отправляя https
. Я выяснил часть OAuth, имею токен доступа и получаю ответы от google. Но я не могу пройти мимо сообщений об ошибках. Я разместил код ниже. Это не очевидно, но EmailSend()
вызывается после того, как я получаю токен доступа из google, так что да, он называется.отправить адрес электронной почты через google http rest api
var emailStr = new Buffer(
"Content-Type: text/plain; charset=\"UTF-8\"\n" +
"MIME-Version: 1.0\n" +
"Content-Transfer-Encoding: 7bit\n" +
"to: [email protected]\n" +
"from: [email protected]\n" +
"subject: Subject Text\n\n" +
"The actual message text goes here"
).toString("base64").replace(/\+/g, '-').replace(/\//g, '_');
//var emailBase64UrlSafe = Rtrim(emailStr, '=');
//var emailBase64UrlSafe = JsStrToUrlSafe (emailStr);
var emailBase64UrlSafe = emailStr;
var http = require('https');
function EmailSend() {
var post_data = emailBase64UrlSafe;
var post_options = {
hostname: 'www.googleapis.com',
port: '443',
path: '/gmail/v1/users/me/messages/send',
method: 'POST',
headers: {
"Authorization": 'Bearer '+googleAccessKey['access_token'],
"Content-Type" : "application/json; charset=UTF-8"
},
};
console.log(post_options);
var post_req = http.request(post_options, function(res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('Response: ' + chunk);
});
});
post_req.write(JSON.stringify({ "raw": emailBase64UrlSafe }));
post_req.end();
}; /* end EmailSend() */
Response: { "error": { "errors": [ { "domain": "global", "reason": "failedPrecondition", "message": "Bad Request" } ], "code": 400, "message": "Bad Request" }
Ресурсы, используемые:
https://developers.google.com/identity/protocols/OAuth2ServiceAccount
https://nodejs.org/api/https.html#https_https_request_options_callback
Я не мог получить эти ресурсы в сообщении, не испортив форматирование. Итак, вот они. 1. https://tools.ietf.org/html/rfc2822#appendix-A 2. https://developers.google.com/identity/protocols/OAuth2ServiceAccount 3. https://nodejs.org/api/ https.html # https_https_request_options_callback 4. http://stackoverflow.com/questions/29504289/send-email-using-google-api-with-only-access-token?rq=1 – user3356715
Вы занимаетесь делегированием домена и выдачей лицензий пользователь вашей учетной записи? проверьте эту ссылку https://developers.google.com/drive/web/delegation, иначе она выкинет эту ошибку. – SGC
Посмотрите документацию, вам нужно разместить объект, частью которого является сообщение: https://developers.google.com/gmail/api/v1/reference/users/messages/send – gcbirzan