Python электронный заголовок экстрактор

У меня есть простой фрагмент кода, который будет смотреть на заголовок письма и извлекать дату, с и до заголовка письма. Чтобы сделать это, я должен поместить заголовок электронной почты в документ.txt, чтобы код мог прочитать заголовок.

from email.parser import BytesHeaderParser
from glob import glob
import csv

fields = ['Date', 'From', 'To', 'Subject']

out = csv.writer(open('output.csv', 'w'))
out.writerow(["File name"]+fields)

parser = BytesHeaderParser()

for name in glob('*.msg'):
with open(name, 'rb') as fd:
msg = parser.parse(fd)
out.writerow([name]+[msg[f] for f in fields])

Я хочу иметь возможность делать это в большом количестве, поэтому при работе с большими объемами писем из одной и той же "фишинговой кампании" я могу поместить все MSG-файлы в одну папку и запустить скрипт для извлечения необходимых мне данных.

Возможно ли это также сделать код в PowerShell.

Благодарю.

1 ответ

Я настоятельно рекомендую использовать один из парсеров MIME, встроенный в Python, для обработки электронной почты. Это относительно сложный формат, и выполнение наивных действий, подобных тем, что вы делаете выше, может привести к ошибкам. Например, строки заголовка могут занимать несколько строк, и вы просто получите некоторые из них с помощью своего кода.

это должно быть простым делом:

from email.parser import HeaderParser
from glob import glob
import csv

fields = ['Date', 'From', 'To', 'Subject']

out = csv.writer(open('output.csv', 'w'))
out.writerow(["File name"]+fields)

parser = HeaderParser()

for name in glob('*.msg'):
  with open(name) as fd:
    msg = parser.parse(fd)
  out.writerow([name]+[msg[f] for f in fields])
Другие вопросы по тегам