Gmail API по-прежнему заменяет текстовую / обычную альтернативную часть тела автоматически сгенерированной частью из HTML - PullRequest
0 голосов
/ 10 октября 2019

Я использую API GMail для отправки электронной почты MIME. Текстовая часть письма всегда восстанавливается из HTML-части.

Я пробовал различные варианты MIME и того, как я структурирую заголовки. Другой человек сообщил об этой проблеме несколько лет назад:

Gmail API заменяет текстовую или обычную альтернативную часть тела автоматически сгенерированной из HTML

Сообщение отображается правильно в GMailИнтерфейс «Отправленные» элементы, если я просматриваю оригинал сообщения. Однако сообщение прибывает в пункт назначения с заменой текстовой части на HTML-часть. Я проверил его с несколькими направлениями, включая Yahoo Mail.

Соответствующая часть входного многокомпонентного сообщения:

--0000000000d81f74059447a2ad02
Content-type: text/plain; charset=UTF-8

Hello plain text

--0000000000d81f74059447a2ad02
Content-type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<b>Hello html</b>

--0000000000d81f74059447a2ad02--

Просмотр необработанного сообщения на цели (Yahoo Mail) показывает следующее:

--00000000000046bd1105948482e9
Content-Type: multipart/alternative; boundary="00000000000046bd0e05948482e7"

--00000000000046bd0e05948482e7
Content-Type: text/plain; charset="UTF-8"

*Hello html*

--00000000000046bd0e05948482e7
Content-Type: text/html; charset="UTF-8"

<b>Hello html</b>

--00000000000046bd0e05948482e7--

Вотполный тестовый пример,

https://gist.github.com/borisreitman/448e2699c267221ebbf430b64346baaa

Обратите внимание, что текстовая часть теперь содержит "Hello html" вместо оригинального "Hello plain text".

1 Ответ

0 голосов
/ 10 октября 2019

Правильный синтаксис для составления сообщения сбивает с толку

Вам необходимо вставить текстовое содержимое ОБА в text/plain и text/html части сообщения.

Измените ваше тело сообщения кода следующим образом, и оно будет работать как шарм:

--0000000000d81f74059447a2ad02
Content-type: text/plain; charset=UTF-8

Hello plain text

*Hello html*

--0000000000d81f74059447a2ad02
Content-type: text/html; charset=UTF-8

<div dir="ltr">Hello plain text<br><div><br></div><div><b>Hello html</b><br></div></div>

--0000000000d81f74059447a2ad02--
...