Skip to main content

emaildata is a python package for extracting content from email messages. It is a fork of the emailcontent package but adds from features.

emaildata features

emaildata extracts this types of contents from emails:

  • Extract metadata.

  • Extract text (plain text and html).

  • Extract attachments.

Extracting metadata

This feature was included from the metadata module of the emailcontent. This module was copied module, few methods of is MetaData class were removed, and the module was made more pylint friendly.

To extract metadata from an email message headers you create an instance of the MetaData class passing a message to the constructor. You can retrieve the metadata with the method to_dict. This can also be done using the method set_message:

import email
from emaildata.metadata import MetaData

message = email.message_from_file(open('message.eml'))
extractor = MetaData(message)
data = extractor.to_dict()
print data.keys()

message2 = email.message_from_file(open('message2.eml'))
extractor.set_message(message2)
data2 = extractor.to_dict()

Extracting text

The class Text in the text module have static methods for extracting text and html from messages:

import email
from emaildata.text import Text

message = email.message_from_file(open('message.eml'))
text = Text.text(message)
html = Text.html(message)

Extracting attachments

The method extract in the Attachment class returns an iterator with the decoded contents of the attachments of a message:

import email
from emaildata.attachment import Attachment

message = email.message_from_file(open('message.eml'))
for content, filename, mimetype, message in Attachment.extract(message):
    print filename
    with open(filename, 'w') as stream:
        stream.write(content)
    # If message is not None then it is an instance of email.message.Message
    if message:
        print "The file {0} is a message with attachments.".format(filename)

By default this method only iterates by the attachments with a filename. To retrieve all attachments you have to pass False as the second parameter (only_with_filename):

import email
import mimetypes
import uuid
from emaildata.attachment import Attachment

message = email.message_from_file(open('message.eml'))
for content, filename, mimetype, message in Attachment.extract(message, False):
    if not filename:
        filename = str(uuid.uuid1()) + (mimetypes.guess_extension(mimetype) or '.txt')
    print filename
    with open(filename, 'w') as stream:
        stream.write(content)
    # If message is not None then it is an instance of email.message.Message
    if message:
        print "The file {0} is a message with attachments.".format(filename)

Changelog

Version 0.3 (2015-05-3)

  • Implemented class for extracting attachments from messages.

Version 0.2 (2015-05-3)

  • Implemented class for extracting plain text and html from messages.

Version 0.1 (2015-03-15)

  • Initial version.

  • Support for metadata extraction.

Release files for emaildata 0.3.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for emaildata 0.3.4
File Size Uploaded
emaildata-0.3.4.tar.gz 6.6 kB Details

Release files / emaildata-0.3.4.tar.gz

Download URL emaildata-0.3.4.tar.gz
Size 6.6 kB
Tags Source
SHA-256 checksum
How to use checksums
f372e522665536b9fb92e2e6612150e36669f9a1d65add040a3825e5382f2ba3
BLAKE2b-256 checksum
How to use checksums
75cbba258749dfbd682d0392e443ac58204ed8d88d9e1f4959c29b96aa737475
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.3.4 This release

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.0

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page