Receiving Mail
When we discuss receiving
mail in this section, we’re not going to be speaking of
fetching mail. Transferring mail from one
machine to another is not particularly interesting.
Mail::POP3Client
by Sean Dowd and
Mail::Cclient
by Malcolm Beattie can easily
perform the necessary POP (Post Office Protocol) or IMAP (Internet
Message Access Protocol) mail transfers for you. It is more
instructive to look at what to do with this mail once it has arrived,
and that’s where we’ll focus our
attention.
Let’s start with the basics and look at the tools available for
the dissection of both a single mail message and an entire mailbox.
For the first topic, we will again turn to Graham Barr’s
MailTools package, this time to use the
Mail::Internet
and Mail::Header
modules.
Dissecting a Single Message
The Mail::Internet
and
Mail::Header
modules offer a convenient way to
slice and dice the headers of an RFC822-compliant mail message.
RFC822 dictates the format of a mail message, including the names of
the acceptable header lines and their formats.
To use Mail::Internet
, you first feed it an open
filehandle to a message file or a reference to an array that already
holds the lines of a message:
use Mail::Internet; $messagefile = "mail"; open(MESSAGE,"$messagefile") or die "Unable to open $messagefile:$!\n"; $message = new Mail::Internet \*MESSAGE; close(MESSAGE);
If we want to parse a message arriving in a stream of input (i.e., piped to us on our standard input), we could do this:
use ...
Get Perl for System Administration now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.