Я успешно сохраняю содержимое каждого электронного письма со следующим кодом в виде файла .txt,. html или .PDF. Тем не менее, я хотел бы сохранить версию каждого типа content_type для каждого письма (для каждого идентификатора пользователя). В настоящее время он сохраняет только один тип файла для каждого идентификатора пользователя.
Например, электронное письмо с вложением PDF только в настоящее время сохраняет PDF. Я хотел бы сохранить вложение в формате PDF вместе с текстовым содержимым сообщения электронной почты в 2 отдельных файла.
Спасибо за любую помощь.
import imaplib
import email
import os
import mimetypes
mail = imaplib.IMAP4_SSL('imap.secureserver.net',993)
mail.login('[user]', '[pw]')
mail.select('Inbox')
result, data = mail.uid('search', None, 'ALL')
item_list = data[0].split()
for item in item_list:
result2, email_data = mail.uid('fetch',item,'(RFC822)')
raw_email = email_data[0][1].decode("utf-8")
email_message = email.message_from_string(raw_email)
print_dir = False
if print_dir: print(dir(email_message)) #options, e.g. list of from, to etc.
from_ = email_message['From']
date_ = email_message['Date']
for part in email_message.walk():
option = str(item)[2:-1] + ' ' + date_[:-15] + ' ' + from_ + ' '
content_type = part.get_content_type()
print(str(item),' ',content_type)
if content_type == 'text/html':
filename = option + '.html'
elif content_type == 'text/plain':
filename = option + '.txt'
elif content_type == 'application/pdf':
attachment = part.get_filename() #attachment filename
filename = option + str(attachment)
else:
# Guesses the file type
ext = mimetypes.guess_extension(content_type)
if not ext:
ext = '.bin'
filename = option + ext
save_path = os.getcwd() + '/' + filename
with open(save_path, 'wb') as fp:
fp.write(part.get_payload(decode=True))
![](https://i.stack.imgur.com/gJgUq.jpg)
^ Для нескольких типов я хотел бы сохранить файл со всеми расширениями типов , Например, для 22382, PDF и txt
![](https://i.stack.imgur.com/Xo8DI.jpg)
^ Текущие выходные файлы