Very fast Python library for .eml files parsing.
Project Links
Meta
Author: Andrii Sokyrko <wartwvister@gmail.com>
Maintainer: Andrii Sokyrko
Requires Python: >=3.7.0
Classifiers
License
- OSI Approved :: Apache Software License
Development Status
- 3 - Alpha
Intended Audience
- Developers
Programming Language
- Python
- Rust
Operating System
- POSIX
- Unix
Topic
- Communications :: Email
- Software Development :: Libraries
fast_mail_parser
fast_mail_parser is a Python library for .eml files parsing. The main benefit is a performance: the library is much faster than python implementations.
Based on mailparse library using pyo3.
Benchmark
-------------------------------------------------------------------------------------------- benchmark: 2 tests -------------------------------------------------------------------------------------------
Name (time in ms) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
test__fast_mail_parser___parse_message 1.8136 (1.0) 1.8938 (1.0) 1.8426 (1.0) 0.0176 (1.0) 1.8465 (1.0) 0.0277 (1.0) 180;0 542.7141 (1.0) 450 1
test__mail_parser___parse_message 14.5583 (8.03) 15.8571 (8.37) 15.0264 (8.16) 0.2368 (13.49) 14.9702 (8.11) 0.2887 (10.42) 5;1 66.5495 (0.12) 32 1
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Legend:
Outliers: 1 Standard Deviation from Mean; 1.5 IQR (InterQuartile Range) from 1st Quartile and 3rd Quartile.
OPS: Operations Per Second, computed as 1 / Mean
Installation
Use the package manager pip to install fast_mail_parser.
pip install fast-mail-parser
Usage
import sys
from fast_mail_parser import parse_email, ParseError
with open('message.eml', 'r') as f:
message_payload = f.read()
try:
email = parse_email(message_payload)
except ParseError as e:
print("Failed to parse email: ", e)
sys.exit(1)
print(email.subject)
print(email.date)
print(email.text_plain)
print(email.text_html)
print(email.headers)
for attachment in email.attachments:
print(attachment.mimetype)
print(attachment.content)
print(attachment.filename)
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
Jun 01, 2022
0.2.5
Jun 01, 2022
0.2.3
Feb 10, 2022
0.2.2
Aug 06, 2021
0.2.1
Dec 23, 2020
0.2.0
Sep 03, 2020
0.1.2
Sep 03, 2020
0.1.1
Sep 03, 2020
0.1.0
Wheel compatibility matrix
Platform | CPython 3.7 | CPython 3.8 | CPython 3.9 | CPython 3.10 | PyPy 3.7 (pp73) |
---|---|---|---|---|---|
macosx_10_7_x86_64 | |||||
manylinux1_x86_64 | |||||
manylinux_2_5_x86_64 | |||||
win_amd64 |
Files in release
No dependencies