Используйте Gmail API для отправки почты в приложении Chrome - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь создать приложение Chrome и хочу отправить по электронной почте . Я нашел это , но я не могу понять, как это работает.

function sendMessage(userId, to, subject, email) {
    authUser(function() {
        var base64EncodedEmail = btoa(email);
        var request = gapi.client.gmail.users.messages.send({
            'userId': userId,
            'message': {
                'raw': base64EncodedEmail,
                'headers': [
                    {'To': to}, 
                    {'Subject': subject}
                ]
            }
        });
        request.execute();
    });
}

function authUser(callback) {
    chrome.identity.getAuthToken({'interactive': true}, function(token) {
        // load Google's javascript client libraries
        var url = "https://www.googleapis.com/gmail/v1/users/me/messages/send?access_token=" + token;
        var request = new XMLHttpRequest();
        request.onreadystatechange = function() {
            if (request.readyState !== 4 || request.status !== 200) {
                return;
            }
            var response = JSON.parse(request.responseText);
            console.log(response);
            callback();
        }
        ;
        request.open('POST', url, true);
        request.send();
        request.setRequestHeader('Authorization', 'Bearer ' + token);
    });
}

Я поместил код в background.js (вызовите sendMessage при запуске) и получил следующий manifest.json :

{
  "name": "Name",
  "description": "Description",
  "permissions": [
        "storage",
        { "fileSystem": ["write"] },
        "identity",
        "https://mail.google.com/"],

  "version": "1.0",
  "manifest_version": 2,
  "oauth2": {
        "client_id": "XXXXX.apps.googleusercontent.com",
        "scopes": [
            "https://www.googleapis.com/auth/userinfo.email",
                        "https://www.googleapis.com/auth/gmail.send"
    ]   
    },
    "app": {
    "background": {
      "scripts": [
            "background.js"]
    }
  },
  "icons": { "16": "images/mailling-16.png", "128": "images/mailling-128.png" }
}

Итак, я понимаю, что нам нужно установить соединение (с нашими учетными данными) с помощью Gmail API , а затем мы отправим письмо . Но у меня ошибка HTTP 400 при запросе POST и запросе сервера: 'raw' строка сообщения полезной нагрузки RFC822 или загрузка сообщения через / upload / * Требуется URL-адрес

Я не понимаю, почему он ожидает сообщения, в то время как мы устанавливаем соединение: I

1 Ответ

0 голосов
/ 17 сентября 2018

Мое лучшее решение - переключиться на приложения-скрипты Google , вы можете отправлять почту только одним с MailApp.sendEmail .

В любом случае, это не решение для приложения Chrome.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...