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: <[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 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 = <[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 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', '[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.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.137.186.178