The mailtools Utility Package
The email package
used by the pymail example of the
prior section is a collection of powerful tools—in fact, perhaps too
powerful to remember completely. At the minimum, some reusable
boilerplate code for common use cases can help insulate you from some
of its details. To simplify email interfacing for more complex mail
clients, and to further demonstrate the use of standard library email
tools, I developed the custom utility modules listed in this section—a
package called mailtools.
mailtools is a Python modules
package: a directory of code, with one module per tool class, and an
initialization module run when the directory is first imported. This
package’s modules are essentially just a wrapper layer above the
standard library’s email package,
as well as its poplib and smtplib modules. They make some assumptions
about the way email is to be used,
but they are reasonable and allow us to forget some of the underlying
complexity of the standard library tools employed.
In a nutshell, the mailtools
package provides three classes—to fetch, send, and parse email
messages. These classes can be used as
superclasses to mix in their methods to an
application-specific class or to create
standalone or embedded
objects that export their methods. We’ll see these classes deployed
both ways in this text.
One design note worth mentioning up front: none of the code in this package knows anything about the user interface it will be used in (console, GUI, web, or other), ...