Skip to main content

Python EML parser library

Project description

Code Health Code issues https://travis-ci.org/GOVCERT-LU/eml_parser.svg?branch=static_types Documentation Status https://badge.fury.io/py/eml-parser.svg

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.

Install the latest version using pip:

pip install eml-parser

Example on how to use:

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()

parsed_eml = eml_parser.eml_parser.decode_email_b(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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eml_parser-1.5.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

eml_parser-1.5-py2.py3-none-any.whl (20.9 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file eml_parser-1.5.tar.gz.

File metadata

  • Download URL: eml_parser-1.5.tar.gz
  • Upload date:
  • Size: 16.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for eml_parser-1.5.tar.gz
Algorithm Hash digest
SHA256 b34fd6d20b0ba727874007d1d615c6f2db82c8bcec76349e1735462c250b4458
MD5 7b4a9345a3fb27bed39abd6db083b816
BLAKE2b-256 9eec4a1634c60f63397f2cb892dc5c28661290d788e924ea9c80045f4b4adb44

See more details on using hashes here.

File details

Details for the file eml_parser-1.5-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for eml_parser-1.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 8bcc4647f7d666fd12c2bf6923202642b3fb99c488cb591b6ae329551ff42ae2
MD5 65994d4d0ee9294e8034040d234b56f1
BLAKE2b-256 b3abe9f47abcf101cd486bf6c6980110c35bcc193a63212e10e65b29f870a14e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page