Я добавляю сообщение в папку Gmail, используя этот (пример) URL:
https://www.googleapis.com/gmail/v1/users/user@domain.com/messages/import?uploadType=multipart
Тело запроса выглядит так:
--test_abc123
Content-Type: application/json; charset=UTF-8
{
"labelIds": [ "Label_525" ],
"raw": "RnJvbTogIlNlY3RpZ28gQ2VydGlmaWNh..."
}
--test_abc123--
Необработанные данные стандартное сообщение MIME в кодировке base64, которое мне кажется нормальным. Результатом этого POST является HTTP-ошибка 400 с ответом об ошибке «Количество частей полезной нагрузки отличается от ожидаемого 2. Количество частей полезной нагрузки запроса: 1».
Я могу предоставить исходный текст MIME, если это полезно, но позвольте Подчеркну, что я без проблем запускаю этот код несколько лет. Я пробовал разные сообщения, чтобы проверить это, но похоже, что Google что-то изменил, чтобы сломать мое программное обеспечение.
Google возражает против моих сырых данных или что-то насчет кодировки MIME? Есть идеи, в чем может быть проблема?
---- Приложение ---- Я получил несколько рабочих сообщений, похоже, все они содержат изображения или вложения данных. Однако я действительно не вижу никаких проблем с сообщениями, которые не работают - я могу импортировать их в Office 365 или Thunderbird или что-нибудь еще, и они отображаются нормально. В качестве теста я попытался импортировать сообщение ниже, которое было взято из MIME RF C. Он терпит неудачу с той же ошибкой. Я думаю, что Google что-то изменил, чтобы сделать свой парсер MIME очень суетливым, но я не понимаю, как исправить мои входные данные.
From: Nathaniel Borenstein <nsb@bellcore.com>
To: Ned Freed <ned@innosoft.com>
Subject: Sample message
MIME-Version: 1.0
Content-type: multipart/mixed; boundary="simple boundary"
This is the preamble. It is to be ignored, though it
is a handy place for mail composers to include an
explanatory note to non-MIME compliant readers.
--simple boundary
This is implicitly typed plain ASCII text.
It does NOT end with a linebreak.
--simple boundary
Content-type: text/plain; charset=us-ascii
This is explicitly typed plain ASCII text.
It DOES end with a linebreak.
--simple boundary--
This is the epilogue. It is also to be ignored.
Приложение 2: Я попробовал простую загрузку (используя контент- введите заголовок message / rfc822), и это сработало, за исключением того, что сообщение не было помечено. Как мне указать, какой ярлык я хочу применить к сообщению? Первоначально я пытался следовать документации здесь ссылка , которая говорит мне создать тело json, которое я дал выше. Это позволяет мне указать метку. Но я не могу использовать это тело в простой загрузке. Тип содержимого либо недействителен, либо Gmail импортирует просто тело json, оно не анализирует необработанные данные. Если бы вы могли указать мне на конкретный пример c, показывающий URI, тело сообщения, заголовки http (а не java код), это было бы очень полезно для меня.