Отправка электронной почты с помощью Google API только с токеном доступа

Я хочу отправить электронное письмо через Google API без ненужных параметров OAUTH2. У меня есть только access_token и refresh_token этого пользователя.

Как я могу отправить электронное письмо через API Gmail с помощью базового запроса POST в NodeJS с плагином Request npm?


person Yagiz    schedule 08.04.2015    source источник
comment
Как я могу сгенерировать Access_token для пользователя без особых проблем?   -  person Code Cooker    schedule 25.09.2017


Ответы (2)


Авраам прав, но я просто решил привести вам пример.

var request = require('request');

server.listen(3000, function () {
  console.log('%s listening at %s', server.name, server.url);

  // Base64-encode the mail and make it URL-safe 
  // (replace all "+" with "-" and all "/" with "_")
  var encodedMail = 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, '_');

  request({
      method: "POST",
      uri: "https://www.googleapis.com/gmail/v1/users/me/messages/send",
      headers: {
        "Authorization": "Bearer 'access_token'",
        "Content-Type": "application/json"
      },
      body: JSON.stringify({
        "raw": encodedMail
      })
    },
    function(err, response, body) {
      if(err){
        console.log(err); // Failure
      } else {
        console.log(body); // Success!
      }
    });
});

Не забудьте изменить адрес электронной почты получателя и отправителя, чтобы пример работал.

person Tholle    schedule 08.04.2015
comment
Этот ответ решил мою проблему с неверными учетными данными. Большое спасибо. - person Shashidhar Gr; 11.09.2015
comment
@ShashidharGr Круто :) Рад, что смог помочь! - person Tholle; 11.09.2015
comment
Если я использую https://www.googleapis.com/upload/gmail/v1/users/userId/messages/send, я получаю сообщение об ошибке Тип носителя «application/json» не поддерживается. Допустимые типы медиа: [сообщение/rfc822]. Мне нужно отправить электронное письмо с вложениями - person Tiger developer; 29.05.2017

Существует два метода присоединения маркеров доступа OAuth2 к запросу Google API. .

  • Используя параметр запроса access_token следующим образом: ?access_token=oauth2-token
  • Используя заголовок авторизации HTTP следующим образом: Authorization: Bearer oauth2-token

Второй предпочтительнее для запросов POST, поэтому необработанный HTTP-запрос для отправки электронной почты будет выглядеть примерно так.

POST /gmail/v1/users/me/messages/send HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer oauth2Token
{"raw":"encodedMessage"}
person abraham    schedule 08.04.2015
comment
В чем разница между использованием Bearer или OAuth в заголовке авторизации? Пример: `'Авторизация': 'OAuth' + account.access_token, - person Yagiz; 08.04.2015
comment
Authorization: Bearer ... — это OAuth 2, Authorization: OAauth ... — это OAuth 1. Хотя я уверен, что есть и другие применения для обоих. - person abraham; 09.04.2015