Разбор составных писем в python и сохранение вложений
Я довольно новичок в python, и я пытаюсь разобрать электронную почту из gmail через imaplib и электронную почту python. Он работает довольно хорошо, но у меня возникли проблемы с вложениями электронной почты.
Я хотел бы разобрать весь открытый текст из электронной почты, игнорируя любой HTML, который может быть вставлен в качестве вторичного типа контента, а также удалить и сохранить все другие вложения. Я пробовал следующее:
...imaplib connection and mailbox selection...
typ, msg_data = c.fetch(num, '(RFC822)')
email_body = msg_data[0][1]
mail = email.message_from_string(email_body)
for part in mail.walk():
if part.get_content_type() == 'text/plain':
body = body + 'n' + part.get_payload()
else:
continue
Это была моя первоначальная попытка просто взять открытый текст части электронной почты, но когда кто-то отправляет электронное письмо с текстовым вложением, содержимое текстового файла отображается для переменной "body" выше.
может ли кто-нибудь сказать мне, как я могу извлечь части открытого текста электронной почты, игнорируя вторичный HTML, который иногда присутствует, а также сохраняя все другие типы вложений файлов в виде файлов? Я извиняюсь, если это не имеет большого смысла. В случае необходимости я уточню этот вопрос.
1 ответов
Если вам просто нужно сохранить текст вложения body
переменная с тем, что у вас есть, она должна быть такой простой:
mail = email.message_from_string(email_body)
for part in mail.walk():
c_type = part.get_content_type()
c_disp = part.get('Content-Disposition')
if c_type == 'text/plain' and c_disp == None:
body = body + '\n' + part.get_payload()
else:
continue
тогда, если Content-Disposition указывает, что это вложение, вы должны иметь возможность использовать part.get_filename()
и part.get_payload()
для обработки файла. Я не знаю, Может ли что-то из этого меняться, но это в основном то, что я использовал в прошлом для взаимодействия с моим почтовым сервером.