Development: разбор почтового сообщения на Python

May 24, 2007 21:55

В общем пришлось мне по долгу службы налабать скриптец на Python'е.

Язык оказался простым до безобразия, а вот возможности его библиотек меня несколько удивили. Ну вот простенький примерчик. Данный скрипт берет на вход почтовое сообщение в формате MSG и разбирает его по косточкам, попутно сохраняя все вложения в файлы.


Можете взять мой тестовый файлик с вложением. Там содержится одно текстовое сообщение и word-овый документ.

Коментарии лучше удалить, ибо интерпретатор на родном мне русском языке их не понимает :)

import sys, email.message, string

# берем имя файла из командой строки и читаем сообщение
file = open(sys.argv[1])
message = email.message_from_file(file)

# выводим основные поля
print "From: " + message.__getitem__("From")
print "To: " + message.__getitem__("To")
print "Subject: " + message.__getitem__("Subject") + "\n"

print "Message content:"

count = 0

# гуляем по всем part'ам сообщения
for part in message.walk():
# это контейнер, нам он не нужен
if part.is_multipart():
continue

count += 1

# ну здесь можно чего угодно понаписать
# на самом деле расширение файла не принципиально для этого пример
contType = part.get_content_type()
if contType.startswith("text"):
filename = "part" + str(count) + ".txt"
elif part.get_filename() != None:
# это файл атачмента
filename = part.get_filename()
else:
filename = "part" + str(count) + ".dat"

print "Part", count, "has type: " + contType

# сохраняем
f = open(filename, "wb")
# decode = True автоматом декодирует вложение например из base64
f.write(part.get_payload(decode=True))
f.close()
print "saved as " + filename

PS: Кстати, к IntelliJ Idea есть плагин Pythonid, который не только поддерживает подсветку синтаксиса, но и поддерживает простейшие рефакторинги, типа Rename %)

mime, разработка ПО, email, development, python, attachment

Previous post Next post
Up