Отправить HTML-изображение по электронной почте на python

#python #base64 #html-email #email-attachments #data-uri

Вопрос:

Я пытаюсь отправить HTML-письмо со встроенным изображением, но изображение не приходит, для какой-то системы оно работает нормально, и изображение отображается, но для некоторых оно не приходит, Проверьте прикрепленное изображение для справки. Возникает ошибка с образцом изображения

И я также пытаюсь обойти изображение, используя uri данных

 <td>
    <img style="display:block;"   src ="{{ image_tag }}" alt="check" 
    width="100%"></p>
</td>
data_uri= base64.b64encode(open('C://Users//Desktop//work.png', 
'rb').read()).decode('utf-8')
image_tag = "data:image/png;base64,"  data_uri
with open('C://Users//Desktop//final.html', encoding='utf-8-sig') as myfile:
    outerdata=myfile.read()
    template = Template(outerdata)
    finalpage=template.render(image_tag = image_tag)
 

Комментарии:

1. Многие почтовые клиенты не поддерживают кодировку base64

2. Вы должны включить его в качестве вложения, ссылку на него с помощью cid

Ответ №1:

Как сказал мышелов, многие почтовые клиенты не поддерживают кодировку base64 https://www.caniemail.com/features/image-base64/

Вы почти правы в следующем:

 <td> <img src="C:UsersDesktopwork.png" alt="Capgemini" style="display:block; margin-left:auto; margin-right:auto;"> </td>
 

Но сначала загрузите изображение в Интернет в общедоступном месте (например, на каком-нибудь веб-сайте). Тогда src должен быть src="https://www.somewhere.com/image.png"

Это не указано, но, выбирая поля слева и справа, если вы хотите, чтобы изображение было центрировано, вам следует сделать это на элементе блока, а не пытаться перейти <img> на блок. Причина в том, что рабочие столы Outlook не поддерживают изменение встроенных элементов на блокировку или наоборот.