После использования API Gmail в Javascript для отправки сообщения с текстом HTML и вложением PDF размером ~ 100 КБ вложение правильно отображается в приложении к сообщению в папке Отправленные Gmail отправителя, но не отображается в сообщении для получателя.
Вызов API - это POST
для:
https://www.googleapis.com/upload/gmail/v1/users/me/messages/send?uploadType=media
Тело запроса, отправляемое API:
{
"headers": {
"Authorization": "Bearer authToken-removedForThisPost"
},
"method": "POST",
"contentType": "message/rfc822",
"contentLength": 134044,
"payload": "exampleBelow",
"muteHttpExceptions": true
}
Вот как выглядит полезная нагрузка:
MIME-Version: 1.0
To: =?utf-8?B?TWlrZSBD?=<[email protected]>
CC: =?utf-8?B?TWlrZSBD?=<[email protected]>
BCC: =?utf-8?B??=<[email protected]>
From: =?utf-8?B?TWlrZSBxWXsd2lr?=<[email protected]>
Subject: =?utf-8?B?subjectLine-removedForThisPost?=
Content-Type: multipart/alternative; boundary=__boundary__
--__boundary__
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: base64
base64EncodedStringHere-removedForThisPost
--__boundary__
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: base64
base64EncodedStringHere-removedForThisPost
--__boundary__
Content-Type: application/pdf; name="File Name.pdf"
Content-Disposition: attachment; filename="File Name.pdf"
Content-Transfer-Encoding: base64
base64EncodedStringHere-removedForThisPost
--__boundary__--
Примечание. В документации для загрузки вложений API Gmail указано, что при загрузке простого вложения (до 5 МБ) требуется Content-Length
. Я сделал так, чтобы мой код выдает целочисленное значение общего количества байтов вложения PDF. Однако я заметил, что Content-Length
не включен в полезную нагрузку.
Я попытался изменить тип содержимого multipart/alternative
для сообщения на multipart/mixed
- это сделало так, чтобы вложение в формате PDF было правильно прикреплено к сообщению получателя, но тело сообщения HTML отображалось как обычный текст (теги HTML). показаны), и есть дополнительное вложение noname.html, которое включает в себя HTML-контент, отображаемый как HTML.
Мне нужно сделать так, чтобы электронное письмо в сообщении получателя имело как тело, отображаемое в формате HTML, так и вложение в формате PDF.
Обновление: Я загрузил примеры необработанных сообщений электронной почты здесь. отправленное сообщение находится слева, а полученное сообщение - справа.