Как вытащить вложенное изображение cid из входящего email
Есть код, который с помощью модуля email парсит входящее электронное письмо:
if msg.is_multipart():
for part in msg.walk():
content_type = part.get_content_type()
content_disposition = str(part.get('Content-Disposition'))
content_encoding = str(part.get('Content-Transfer-Encoding'))
# skip any text/plain (txt) attachments
if content_type == 'text/plain' and 'attachment' not in content_disposition:
body = part.get_payload(decode=True)
break
else:
body = msg.get_payload(decode=True)
Как мне вытащить из тела письма вложенное изображение, и сохранить его в файл, если инфо о изображении только что-то вроде такого: [cid:[email protected]]?
Ответы (1 шт):
Автор решения: Zondrillo
→ Ссылка
Для того чтобы извлечь вложенное в тело письма изображение - необходимо "пройти" по частям составного письма:
if some_msg.is_multipart():
for part in some_msg.walk():
content_type = part.get_content_type()
if content_type == 'text/plain':
body = part.get_payload(decode=True)
""" Далее мы отфильтровываем картинку и можем записать её в файл """
elif content_type == 'image/png' or content_type == 'image/jpg':
img_data = part.get_payload(decode=True)
""" Дальше надо создать файл в байтовом режиме для записи картинки """
with open('path/to/some_file.png', 'wb') as image:
image.write(img_data)