Во-первых, обратите внимание, что в Руководстве пользователя есть ошибка. Правильный фрагмент кода должен выглядеть так:
def send_simple_message():
return requests.post(
"https://api.mailgun.net/v2/YOUR-DOMAIN/messages",
auth=("api", "YOUR-KEY"),
files={"inline":("image", open("/tmp/image.jpg"))},
data={"from": "[email protected]",
"to": ["[email protected]"],
"subject": "Hello",
"text": "Testing some Mailgun awesomness!",
"html": '<html>Inline image here: <img src="cid:image"></html>'})
Параметр files
должен быть dict
, а не list
, а значение в dict
должно быть кортежем, включающим имя файла. Затем вы используете это имя файла в качестве значения cid:
в своем HTML.
Что касается вашего вопроса, вы должны понимать, что Mailgun отправляет сообщения электронной почты как сообщение MIME «multipart/alternative». Цитата из соответствующего стандарта:
... каждая из частей тела является "альтернативной" версией той же самой информации.
Системы должны признавать взаимозаменяемость содержимого различных частей. Системы должны выбирать «лучший» тип, исходя из местных условий и предпочтений…
Итак, вы видите, что ваша программа для чтения электронной почты ведет себя правильно, когда показывает вам только один текст или html. Чтобы убедиться, что отправляются обе формы, попробуйте просмотреть источник сообщения электронной почты. В Gmail найдите пункт меню «Показать оригинал». В Firefox попробуйте "Просмотр | Источник сообщения" или "Просмотр | Тело сообщения как...".
Как отправитель почты, вы должны, если это возможно, включать в свои сообщения как "текст" , так и "html" с эквивалентным значением. Так:
text='''Our sale prices are VERY LOW this weekend.
Visit http://sales.example.com.''',
html='''<html>
<img src="cid:logo.jpg"/>
Our sale prices are <b>very low</b> this weekend.
Visit <a href="http://sales.example.com">our website!</a>
</html>'''
Видите ли вы, как независимо от того, какую версию увидит пользователь, он получит одно и то же значение, ограниченное только средой, в которой он просматривает сообщение?
В качестве альтернативы, если вы решите не отправлять одно и то же сообщение как в «текстовом», так и в «html», вы можете отправить его только в одном или другом формате. Если вы отправляете его только в формате «html», то он будет правильно отображаться на большинстве современных программ для чтения электронной почты, но будет тарабарщиной на традиционных программах для чтения электронной почты. Если вы отправите его только в виде «текста», он будет доступен для чтения на всех программах для чтения электронной почты, но не будет иметь никаких функций форматированного текста: полужирный шрифт, курсив, встроенные изображения и т. д.
person
Robᵩ
schedule
02.10.2014