отправить письмо с приложением в приложении, используя метод загрузки медиа - PullRequest
0 голосов
/ 10 января 2019

Я создал черновик сообщения, используя метод "медиа загрузки" используя код ниже

var draftUploadUrl = "https://www.googleapis.com/upload/gmail/v1/users/me/drafts?uploadType=media";

var response = UrlFetchApp.fetch(draftUploadUrl, {
  method: "POST",
  headers: {
    //authorizing request through service account
    "Authorization": "Bearer " + service.getAccessToken(),
    "Content-Type": "message/rfc822",
  },

  muteHttpExceptions: true,

  //payload_data is mime content with base64 encode of email body an 
  //attachment 
  payload: payload_data
});


draftID = /: "(.*)"/.exec(response.getContentText())[1];

console.log("draftID: " + draftID);

Я получил черновой идентификатор сообщения, как я могу установить черновой идентификатор в параметрах для отправки электронного письма с вложением?

фрагменты кода

var resp1 = UrlFetchApp.fetch("https://www.googleapis.com/upload/gmail/v1/users/me/drafts/send?uploadType=media", {
  method: "POST",
  headers: {
    "Authorization": "Bearer " + service.getAccessToken(),
    "Content-Type": "message/rfc822"
  },
  muteHttpExceptions: true,
  payload: JSON.stringify({
    "id": draftID
  })
});

выдает ошибку «Неверный черновик». Можете ли вы указать, как передать параметр ID для вышеуказанного вызова URL или что пошло не так в приведенном выше коде?

Заранее спасибо.

1 Ответ

0 голосов
/ 11 января 2019
  • Вы уже смогли правильно создать черновик письма.
  • Вы хотите отправить созданный черновик письма, напрямую запросив конечную точку API Gmail с помощью Google Apps Script.

Если мое понимание верно, как насчет этой модификации?

Очки модификации:

Модифицированный скрипт:

var resp1 = UrlFetchApp.fetch("https://www.googleapis.com/gmail/v1/users/me/drafts/send", {
  method: "POST",
  headers: {
    "Authorization": "Bearer " + service.getAccessToken(),
    "Content-Type": "application/json"
  },
  muteHttpExceptions: true,
  payload: JSON.stringify({
    "id": draftID
  })
});

Примечание:

  • Эта модификация предполагает, что вы уже смогли использовать Gmail API с помощью токена доступа.
  • Если формат черновика почты не завершен, то при отправке черновика почты возникает ошибка.

Справка:

Если я неправильно понимаю ваш вопрос, я прошу прощения.

Edit:

Когда вы хотите создать черновик электронного письма, включая файл вложения, как насчет этого примера сценария? Это от https://stackoverflow.com/a/45992149/7108653.

Пример сценария:

Этот пример сценария создает черновик письма с помощью Gmail API.

function createDraft() {
  var fileId = "### file id ###"; // Please set this.
  var file = DriveApp.getFileById(fileId);
  var forScope = GmailApp.getInboxUnreadCount();
  var htmlBody = 'sample HTML body'; // Please set this.
  var raw = 
      'Subject: sample subject\r\n' + // Please set this.
      'To: aa@bb.cc\r\n' + // Please set this.
      'Content-Type: multipart/mixed; boundary=##########\r\n\r\n' +
      '--##########\r\n' +
      'Content-Type: text/html; charset=UTF-8\r\n\r\n' + htmlBody + '\r\n' +
      '--##########\r\n' +
      'Content-Type: ' + file.getMimeType() + '; charset=UTF-8; name="' + file.getName() + '"\r\n' +
      'Content-Disposition: attachment; filename="' + file.getName() + '"\r\n' +
      'Content-Transfer-Encoding: base64\r\n\r\n' + Utilities.base64Encode(file.getBlob().getBytes()) +
      '\r\n--##########\r\n';
  var draftBody = Utilities.base64EncodeWebSafe(raw, Utilities.Charset.UTF_8);
  var params = {
    method:"post",
    contentType: "application/json",
    headers: {"Authorization": "Bearer " + service.getAccessToken()},
    muteHttpExceptions: true,
    payload: JSON.stringify({"message": {"raw": draftBody}})
  };
  var resp = UrlFetchApp.fetch("https://www.googleapis.com/gmail/v1/users/me/drafts", params);
  Logger.log(resp)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...