I l@ve RuBoard |
6.2 The rfc822 ModuleThe 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: <[email protected]> Date: Tue, 14 Nov 2000 14:55:07 -0500 To: "Fredrik Lundh" <[email protected]> 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 ModuleFile: 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 = <[email protected]> to = "Fredrik Lundh" <[email protected]> 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 ModuleFile: 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', '[email protected]')] 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. |
I l@ve RuBoard |