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 bodyThe 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") ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access