Как я могу отправить python электронное письмо со встроенными изображениями для подписи? В настоящее время я использую ссылку для отображения изображений следующим образом:
<img border="0" src="https://website.com/logo.png" role="presentation" alt="logo mail icon" style="max-width: 300px; width: 300px; display: block;">
Но в Outlook изображения не загружаются, и пользователь должен нажать на «показать изображения», что разрушает электронную почту, так как я использовать его в деловых целях (это ссылка для подтверждения регистрации). Есть ли способ, как отобразить изображения встроенными и отправить их по электронной почте вместо ссылки?
Мой код пока:
from email.message import EmailMessage
import smtplib, ssl
import email.utils
import html2text
with open(html_template, 'r') as f:
html_string = f.read()
plain_text = html2text.html2text(html_string)
msg = EmailMessage()
msg['Subject'] = subject
msg['From'] = mail_address
msg['To'] = email_receiver
msg['Date'] = email.utils.formatdate()
msg.add_header('Content-Type','text/html')
msg.add_header('Content-Disposition', 'attachment', filename=file_attachment)
msg.set_content(plain_text)
msg.add_alternative(html_string.format(name=surname), subtype='html')
files = [file_attachment]
for file in files:
with open(file, 'rb') as f:
file_data = f.read()
file_name = f.name
msg.add_attachment(file_data, maintype='application', subtype='octet-stream', filename=file_name)
with smtplib.SMTP(smtp, port) as smtp:
smtp.ehlo()
smtp.starttls(context=ssl.create_default_context())
smtp.ehlo()
smtp.login(mail_address, mail_password)
try:
smtp.send_message(msg)
smtp.quit()
except Exception as e:
print('ERROR')
Я не мог найти много подходов или решений. Я читал о кодировании изображений в base64, но я немного запутался.
Заранее спасибо!