Я использую игровую площадку GSuite OAuth2.0 для тестирования кода для отправки электронных писем через Gmail API. Я успешно отправляю простые электронные письма и электронные письма только с приложениями. Но при попытке отправить электронное письмо с текстом и вложением я ударился о стену.
Следующий код, протестированный на игровой площадке, успешно отправляет сообщение и получает его, но вложение исчезло! Когда я нажимаю «Показать оригинал» в получающей учетной записи Gmail, он показывает все данные и код заголовка, но ничего о вложении. Как будто сервер Gmail удаляет его, не выдавая никаких сообщений об ошибках. Я не понимаю, почему.
Кроме того, когда я просматриваю папку «Отправленные» учетной записи отправителя, там есть электронное письмо с вложением! Если я щелкну «Показать оригинал» в учетной записи отправителя, вложение НЕ появится. Но я легко вижу это, просто смотря на письмо в обычном режиме. И если я переадресую электронное письмо с приложением, оно будет успешно доставлено с почтовым сообщением. Таким образом, он хранится в папке «Отправленные» отправителя, просто по какой-то причине не попал в исходный получатель.
Вот что я отправляю на площадке OAuth. Я отредактировал электронные письма для конфиденциальности:
POST /upload/gmail/v1/users/me/messages/send?uploadType=multipart HTTP/1.1
Host: www.googleapis.com
Content-length: 7512
Content-type: message/rfc822
Authorization: Bearer ya29.Il_AB9XB2T68fKbhDZx37Y30qAUk89GfCzXwB8IQ1Asu4839djNUethOBPwya18TK6-aGD98TrlI_3woFe34NSZIKBPV2QH9_kim_tslZXVWh_NWHf6dHF2bsvEWPg8FTw
MIME-Version: 1.0
From: Mr. Sender <sender@gmail.com>
Subject: Test Attachment
To: receiver@gmail.com
Content-Type: multipart/alternative; boundary=000000000000b84ac3059fa3c6aa
--000000000000b84ac3059fa3c6aa
Content-Type: text/html; charset=UTF-8
<h1>Can you see this?</h1><br><br>Did it work?
--000000000000b84ac3059fa3c6aa
MIME-Version: 1.0
Content-Type: image/jpeg
Content-Disposition: attachment; filename="Page Divider - Marble.jpg"
Content-Transfer-Encoding: base64
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
--000000000000b84ac3059fa3c6aa--
Я прочитал документацию и тонны SO сообщений. Я понятия не имею, почему это происходит.