GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

mailgun

flanker – Python電子メールアドレスとMime解析ライブラリ

投稿日:

Python電子メールアドレスとMime解析ライブラリ http://www.mailgun.com

Flanker – Pythonの電子メールアドレスとMIME解析

Flankerは、Mailgun TeamによってPythonで書かれたオープンソース解析ライブラリです。 Flankerは現在、アドレス解析ライブラリ(flanker.addresslib)とMIME解析ライブラリ(flanker.mime)で構成されています。

詳細なドキュメントはUser ReferenceとAPI Referenceにあります。 クイックスタートガイドは以下のとおりです。

インストール

FlankerはPython 2.7.2でビルドされ、テストされました。

GitHubからリポジトリをピップまたはクローンでインストールすることができます。

フランジャーで作業を始める前に、Pythonヘッダファイルが必要になるので、最初にインストールしてください:

# ubuntu
sudo apt-get install python-dev
# fedora
sudo yum install python-devel

pipを使用している場合は、次のように入力します。

pip install flanker

GitHubからクローンを作成する場合は、次のように入力します。

git clone git@github.com:mailgun/flanker.git
cd flanker
pip install -e .

アドレス解析

1つのメールボックス(表示名と電子メールアドレス)を解析するには:

>>> from flanker.addresslib import address
>>>
>>> address.parse('Foo foo@example.com')
Foo <foo@example.com>

無効なアドレスがNoneとして返されます。

>>> from flanker.addresslib import address
>>>
>>> print address.parse('@example.com')
None

単一の電子メールアドレス(表示名なし)を解析するには:

>>> from flanker.addresslib import address
>>>
>>> address.parse('foo@example.com', addr_spec_only=True)
foo@example.com

アドレスリストを解析するには:

>>> from flanker.addresslib import address
>>>
>>> address.parse_list('foo@example.com, bar@example.com, @example.com')
[foo@example.com, bar@example.com]

アドレスリストを解析するとともに、解析されたアドレスと解析不能な部分を含むタプルを返す

>>> from flanker.addresslib import address
>>>
>>> address.parse_list('foo@example.com, bar@example.com, @example.com', as_tuple=True)
[foo@example.com, bar@example.com], ['@example.com']

厳密モードでアドレスリストを解析するには:

>>> from flanker.addresslib import address
>>>
>>> address.parse_list('foo@example.com, bar@example.com, @example.com', strict=True)
[foo@example.com, bar@example.com]

電子メールアドレス(解析、DNS、MX存在、ESP文法チェック)を検証するには:

>>> from flanker.addresslib import address
>>>
>>> address.validate_address('foo@mailgun.com')
foo@mailgun.com

アドレス一覧を検証するには:

>>> from flanker.addresslib import address
>>>
>>> address.validate_list('foo@mailgun.com, bar@mailgun.com, @mailgun.com', as_tuple=True)
([foo@mailgun.com, bar@mailgun.com], ['@mailgun.com'])

MIME解析

次の例では、message_stringは次のMIMEメッセージに設定されます。

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

MIMEメッセージを解析するには:

>>> from flanker import mime
>>>
>>> msg = mime.from_string(message_string)

MIMEメッセージヘッダ(ヘッダ付きのUnicodeマルチバリュー辞書):

>>> from flanker import mime
>>>
>>> msg = mime.from_string(message_string)
>>> msg.headers.items()
[('Mime-Version', '1.0'),
 ('Content-Type',
  ('multipart/alternative', {'boundary': u'001a11c1d71697c7f004e6856996'})),
 ('From', 'Bob <bob@example.com>'),
 ('To', 'Alice <alice@example.com>'),
 ('Subject', 'hello, world'),
 ('Date', 'Mon, 16 Sep 2013 12:43:03 -0700')]

便利なcontent_typeメンバー(述部付き):

>>> from flanker import mime
>>> msg = mime.from_string(message_string)
>>>
>>> msg.content_type.is_multipart()
True
>>>
>>> msg.content_type.is_singlepart()
False
>>>
>>> msg.content_type.is_message_container()
False

メッセージのデコードされた本文:

>>> from flanker import mime
>>> msg = mime.from_string(message_string)
>>>
>>> # None because message is multipart
>>> print msg.body
None
>>>
>>> for part in msg.parts:
       print 'Content-Type: {} Body: {}'.format(part, part.body)

Content-Type: (text/plain) Body: Hello, *Alice*
Content-Type: (text/html) Body: <p>Hello, <b>Alice</b></p>

>>> # None because no enclosed messages exist
>>> print msg.enclosed
None







-mailgun

執筆者: