Отправка составных HTML-сообщений, содержащих встроенные изображения

Для Python версии 3.4 и выше.

Принятый ответ отличный, но multipart подходит только для более mail старых версий Python (2.x email-integration и 3.3). Думаю, его нужно python обновить.

Вот как это можно mime сделать в новых версиях Python python-shell (3.4 и выше):

from email.message import EmailMessage
from email.utils import make_msgid
import mimetypes

msg = EmailMessage()

# generic email headers
msg['Subject'] = 'Hello there'
msg['From'] = 'ABCD '
msg['To'] = 'PQRS '

# set the plain text body
msg.set_content('This is a plain text body.')

# now create a Content-ID for the image
image_cid = make_msgid(domain='xyz.com')
# if `domain` argument isn't provided, it will 
# use your computer's name

# set an alternative html body
msg.add_alternative("""\

    
        

This is an HTML body.
It also has an image.

""".format(image_cid=image_cid[1:-1]), subtype='html') # image_cid looks like # to use it as the img src, we don't need `<` or `>` # so we use [1:-1] to strip them off # now open the image and attach it to the email with open('path/to/image.jpg', 'rb') as img: # know the Content-Type of the image maintype, subtype = mimetypes.guess_type(img.name)[0].split('/') # attach it msg.get_payload()[1].add_related(img.read(), maintype=maintype, subtype=subtype, cid=image_cid) # the message is ready now # you can write it to a file # or send it using smtplib

python

email

mime

attachment

multipart

2022-11-08T09:19:18+00:00
Вопросы с похожей тематикой, как у вопроса:

Отправка составных HTML-сообщений, содержащих встроенные изображения