Во-первых, обратите внимание, что в руководстве пользователя есть ошибка. Правильный фрагмент кода должен выглядеть следующим образом:
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». Цитируя the relevant standard:
... каждая из частей тела, является «альтернативной» версии одного и того же информации.
Системы должны понимать, что содержание различных частей взаимозаменяемо. Системы должны выбрать «лучший» тип, основанный на местной окружающей среды и предпочтений ...
Итак, вы видите, ваш электронный читатель правильно вести себя, когда он только показывает один: либо " text 'или' html '. Чтобы убедиться, что обе формы отправляются, попробуйте просмотреть источник сообщения электронной почты. В Gmail найдите пункт меню «Показать оригинал». В Firefox попробуйте «View | Message Source» или «View | Message Body As ...».
В качестве почтового отправителя вы должны, если это вообще возможно, включать ваши сообщения как «текст» , так и «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», то он будет отображаться правильно на большинстве современных почтовых читателей, но будет тарабарщить на традиционных читателях электронной почты. Если вы отправляете его только в «тексте», он будет читабельным для всех читателей электронной почты, но не будет иметь никаких богатых текстовых функций: жирные, курсивные, встроенные изображения и т. Д.
Rob спасибо вам большое за анализ I узнал что-то от вас, я ценю это, я видел источник своей электронной почты, и вы правы, что это действительно. –
Большое спасибо. –