The rfc822 Module
The rfc822
module contains a parser for mail and news messages (and any
other messages that conform to the RFC 822 standard, such as HTTP
headers).
Basically, an RFC 822–style message consists of a number of header fields, followed by at least one blank line, and the message body itself.
For example, here’s a short mail message. The first five lines make up the message header, and the actual message (a single line, in this case) follows after an empty line:
Message-Id: <20001114144603.00abb310@oreilly.com> Date: Tue, 14 Nov 2000 14:55:07 -0500 To: "Fredrik Lundh" <fredrik@effbot.org> From: Frank Subject: Re: python library book! Where is it?
Example 6-1 shows how the message parser reads the headers and returns a dictionary-like object, with the message headers as keys.
Example 6-1. Using the rfc822 Module
File: rfc822-example-1.py import rfc822 file = open("samples/sample.eml") message = rfc822.Message(file) for k, v in message.items(): print k, "=", v print len(file.read()), "bytes in body"subject = Re: python library book!
from = "Frank" <your@editor>
message-id = <20001114144603.00abb310@oreilly.com>
to = "Fredrik Lundh" <fredrik@effbot.org>
date = Tue, 14 Nov 2000 14:55:07 -0500
25 bytes in body
The message object also provides a couple of convenience methods, which parse address fields and dates for you, as shown in Example 6-2.
Example 6-2. Parsing Header Fields Using the rfc822 Module
File: rfc822-example-2.py import rfc822 file = open("samples/sample.eml") ...
Get Python Standard Library now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.