#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 не поддерживают изменение встроенных элементов на блокировку или наоборот.