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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access