Python EML parser library
Project description
eml_parser serves as a python module for parsing eml files and returning various information found in the e-mail as well as computed information.
Extracted and generated information include but are not limited to:
- attachments
- hashes
- names
- from, to, cc
- received servers path
- subject
- list of URLs parsed from the text content of the mail (including HTML body/attachments)
Please feel free to send me your comments / pull requests.
For the changelog, please see CHANGELOG.md.
Installation:
pip install eml_parser[filemagic]
:warning: Note: If you don't want to / cannot use file-magic (e.g. if you are using python-magic), install via:
pip install eml_parser
Note for OSX users:
Make sure to install libmagic, else eml_parser will not work.
Example usage:
import datetime import json import eml_parser def json_serial(obj): if isinstance(obj, datetime.datetime): serial = obj.isoformat() return serial with open('sample.eml', 'rb') as fhdl: raw_email = fhdl.read() ep = eml_parser.EmlParser() parsed_eml = ep.decode_email_bytes(raw_email) print(json.dumps(parsed_eml, default=json_serial))
Which gives for a minimalistic EML file something like this:
{ "body": [ { "content_header": { "content-language": [ "en-US" ] }, "hash": "6c9f343bdb040e764843325fc5673b0f43a021bac9064075d285190d6509222d" } ], "header": { "received_src": null, "from": "john.doe@example.com", "to": [ "test@example.com" ], "subject": "Sample EML", "received_foremail": [ "test@example.com" ], "date": "2013-04-26T11:15:47+00:00", "header": { "content-language": [ "en-US" ], "received": [ "from localhost\tby mta.example.com (Postfix) with ESMTPS id 6388F684168\tfor <test@example.com>; Fri, 26 Apr 2013 13:15:55 +0200" ], "to": [ "test@example.com" ], "subject": [ "Sample EML" ], "date": [ "Fri, 26 Apr 2013 11:15:47 +0000" ], "message-id": [ "<F96257F63EAEB94C890EA6CE1437145C013B01FA@example.com>" ], "from": [ "John Doe <john.doe@example.com>" ] }, "received_domain": [ "mta.example.com" ], "received": [ { "with": "esmtps id 6388f684168", "for": [ "test@example.com" ], "by": [ "mta.example.com" ], "date": "2013-04-26T13:15:55+02:00", "src": "from localhost by mta.example.com (postfix) with esmtps id 6388f684168 for <test@example.com>; fri, 26 apr 2013 13:15:55 +0200" } ] } }
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size eml_parser-1.14.4-py3-none-any.whl (39.5 kB) | File type Wheel | Python version py3 | Upload date | Hashes View |
Close
Hashes for eml_parser-1.14.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 635cd948f26a30665aeea81b36cdc37b370d2984043cab35659e86da23678215 |
|
MD5 | cbb1bb09096712c30280b700a28b4307 |
|
BLAKE2-256 | 1291e48c91ac82dd5fa8df807939ee00ee04e19cf3e3ea65d72ee62d32c5ae03 |