Listing 1: print-mail.pl

#!/usr/bin/perl -wT

use strict;
use diagnostics;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use Net::POP3;

# Force flushing
$| = 1;

# ------------------------------------------------------------
# Create a new CGI object
my $query = new CGI;

# Send a MIME header
print $query->header("text/html");

# Get a bunch of information
my $mailserver = $query->param("mailserver");
my $username = $query->param("username");
my $password = $query->param("password");

# Print a nice beginning 
print $query->start_html(-title => "Your mail");
print "<H1>Your mail</H1>\n";

# ------------------------------------------------------------
# Create a new POP object
my $pop = new Net::POP3($mailserver);
die "Error connecting" unless (defined $pop);

# Log into the server
my $num_messages = $pop->login($username, $password);
die "Error logging in" unless (defined $num_messages);

# How many messages?
print "You have $num_messages message",
    ($num_messages == 1) ? "" : "s", " waiting.\n";

# ------------------------------------------------------------
# Iterate through each message, printing it
foreach my $index (1 .. $num_messages)
{
    print "<H2>Message $index</H2>\n";
    
    # Grab the message contents
    my $message_ref = $pop->get($index);

    # Print the message contents
    print "<pre>\n", @$message_ref, "</pre><HR>\n";
}

# Log off from the POP server
$pop->quit;

# Finish the CGI program
print $query->end_html;
