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 822style 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" 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" message-id = <20001114144603.00abb310@oreilly.com> to = "Fredrik Lundh" 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") message = rfc822.Message(file) print message.getdate("date") print message.getaddr("from") print message.getaddrlist("to") (2000, 11, 14, 14, 55, 7, 0, 0, 0) ('Frank', 'your@editor') [('Fredrik Lundh', 'fredrik@effbot.org')]
The address fields are parsed into (mail, real name) tuples. The date field is parsed into a 9-element time tuple, ready for use with the time module.
Core Modules
More Standard Modules
Threads and Processes
Data Representation
File Formats
Mail and News Message Processing
Network Protocols
Internationalization
Multimedia Modules
Data Storage
Tools and Utilities
Platform-Specific Modules
Implementation Support Modules
Other Modules