Отправить многостраничное электронное письмо Gmail с огромными вложениями

Я пытаюсь отправить электронное письмо с вложениями, используя API Gmail, я использую NodeJS, я прочитал этот документ

https://developers.google.com/gmail/api/guides/uploads#multipart

Но я не уверен, что мне не хватает в заголовках, вот код

Мне нужно отправить электронное письмо с вложением размером более 25 МБ, поэтому для этого я использую multipart Gmail, следующий код

const options = {
    uri: 'https://www.googleapis.com/upload/gmail/v1/users/[email protected]/messages/send?uploadType=multipart',
    method: apiConfig.method,
    media: {mimeType: 'message/rfc822', body: requestParameter.dataObj.raw},
    headers: {
        Authorization: 'Bearer ' + token,
        'Content-type': 'message/rfc822'
    },
    json: true
}

person A J    schedule 27.01.2020    source источник
comment
Могу я спросить вас о вашей проблеме? А можешь объяснить про huge attachments?   -  person Tanaike    schedule 28.01.2020
comment
Это дает мне неверный составной запрос с 0 частями пантомимы. @Танаике   -  person A J    schedule 28.01.2020
comment
Спасибо за ответ. Можете ли вы предоставить весь сценарий для воспроизведения вашей проблемы? Конечно, пожалуйста, удалите вашу личную информацию. Кстати, не могли бы вы объяснить про huge attachments?   -  person Tanaike    schedule 28.01.2020
comment
Спасибо за ответ, да, я объясню вам, я должен отправить электронное письмо с вложением размером более 25 МБ, поэтому для этого я использую составную часть Gmail, я обновил описание @Tanaike   -  person A J    schedule 28.01.2020
comment
Спасибо за ответ. Полезна ли эта информация для вашей ситуации? stackoverflow.com/search?q=gmail+25+MB+attachment   -  person Tanaike    schedule 28.01.2020
comment
Я сослался на эту ссылку stackoverflow.com/questions/55639575/ Но я не уверен, каков формат mimemessage, так как я получаю сообщение об ошибке, поскольку требуется адрес получателя. Не уверен @ Танайке   -  person A J    schedule 28.01.2020
comment
Спасибо за ответ. Прошу прощения, что мои комментарии не были полезны для вашей ситуации. Я хотел бы решить вашу проблему. Но я не могу понять ваш сценарий для воспроизведения вашей проблемы. Поэтому, когда я смогу правильно понять ваш сценарий, я хотел бы подумать о проблеме и решении. Это из-за моего слабого мастерства. Я глубоко извиняюсь за это.   -  person Tanaike    schedule 28.01.2020


Ответы (1)


В соответствии с Отправлять вложения с помощью Gmail документация:

Вы можете отправить до 25 МБ вложений. Если у вас более одного вложения, их общий размер не может превышать 25 МБ.

Если размер вашего файла превышает 25 МБ, Gmail автоматически добавит в электронное письмо ссылку на Google Диск, а не прикрепит ее к сообщению.

Но последнее предложение относится к пользовательскому интерфейсу Gmail, а не к тому, используете ли вы API.

Таким образом, вы не можете напрямую загрузить вложение в Gmail — вам придется сначала загрузить его на Google Диск, а затем отправить по электронной почте.

Возможное решение:

  1. Загрузите файл, который хотите отправить на Google Диск, с помощью Google Drive API v3. Поскольку вы хотите загрузить файл больше 25 МБ, вам следует использовать возобновляемую загрузку. Возобновляемая загрузка — это более надежный тип передачи, особенно важный для больших файлов.
var options = {
        url: 'https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable',
        headers: {
            'Authorization': 'Bearer ' + token,
            'Content-Type': 'application/json',
        },
        //other options
}

  1. Получите файл с Диска с помощью Drive API и установите необходимые разрешения, чтобы иметь возможность поделиться файлом. После этого вы должны использовать модуль NPM async для синхронизации изменений разрешений.
var fileId = 'ID_OF_THE_FILE';
var permissions = [
  {
    'type': 'user',
    'role': 'writer',
    'emailAddress': '[email protected]'
  }, {
    'type': 'domain',
    'role': 'writer',
    'domain': 'example.com'
  }
];
  1. Отправьте электронное письмо со ссылкой на нужный файл в теле.

Примечание: вам также необходимо авторизовать необходимые области как для Диска, так и для Gmail.

Кроме того, я предлагаю вам проверить следующие ссылки, поскольку они могут быть вам полезны:

person ale13    schedule 28.01.2020