Python электронный заголовок экстрактор - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть простой фрагмент кода, который будет смотреть на заголовок письма и извлекать дату, с и до заголовка письма.Чтобы сделать это, я должен поместить заголовок электронной почты в документ .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 Ответ

0 голосов
/ 02 декабря 2018

Я бы настоятельно рекомендовал использовать один из парсеров 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])
...