/flanker

Python email address and Mime parsing library

Primary LanguagePythonApache License 2.0Apache-2.0

image

Flanker

Flanker is an open source parsing library written in Python by the Mailgun Team. Flanker currently consists of an address parsing library (flanker.addresslib) as well as a MIME parsing library (flanker.mime).

Detailed documentation is provided in the User Manual as well as the API Reference. A Quickstart Guide is provided below.

Quickstart Guide

Installing

Flanker was built and tested with Python 2.7.2.

You can install flanker via pip or clone the repo from GitHub.

You'll need Python headers files before you start working with flanker, so install them first:

If you are using pip, simply type:

Note about installing from PyPi. Installing without specifying a version number will install the latest version from PyPi that does not pin version dependences. This version of Flanker will most likely work, but is not guaranteed. If you want to run a guaranteed to work version of Flanker, run the version where we pin dependences, which is one lower major version number. For example, if the current release is `0.4.4` then the stabled pinned dependency version is `0.3.4`.

If you are cloning from GitHub, you can type:

Address Parsing

To parse a single mailbox (display name as well as email address):

An invalid address is returned as `None`:

To parse a single email address (no display name):

To parse an address list:

To parse an address list as well as return a tuple containing the parsed addresses and the unparsable portions

To parse an address list in strict mode:

To validate an email address (parse as well as DNS, MX existence, and ESP grammar checks):

To validate an address list:

MIME Parsing

For the following examples, message_string will be set to the following MIME message:

MIME-Version: 1.0
Content-Type: multipart/alternative; boundary=001a11c1d71697c7f004e6856996
From: Bob <bob@example.com>
To: Alice <alice@example.com>
Subject: hello, world
Date: Mon, 16 Sep 2013 12:43:03 -0700

--001a11c1d71697c7f004e6856996
Content-Type: text/plain; charset=us-ascii

Hello, *Alice*

--001a11c1d71697c7f004e6856996
Content-Type: text/html; charset=us-ascii

<p>Hello, <b>Alice</b></p>

--001a11c1d71697c7f004e6856996--

To parse a MIME message:

MIME message headers (unicode multi-value dictionary with headers):

Useful content_type member with predicates:

Decoded body of a message: