Sample code for 30+ languages & platforms
Perl

POP3 to SMTP Forwarder

Read a POP3 mailbox and forwards the email to another email address, keeping the recipients in the original email the same.

Chilkat Perl Downloads

Perl
use chilkat();

$success = 0;

# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

$mailman = chilkat::CkMailMan->new();

# Set the POP3 server's hostname
$mailman->put_MailHost("pop.example.com");

# Set the POP3 login/password.
$mailman->put_PopUsername("MY_POP3_LOGIN");
$mailman->put_PopPassword("MY_POP3_PASSWORD");

# Set the SMTP hostname for sending.
$mailman->put_SmtpHost("smtp.example.com");
$mailman->put_SmtpUsername("MY_SMTP_LOGIN");
$mailman->put_SmtpPassword("MY_SMTP_PASSWORD");

$fromAddr = 'me@example.com';
$toAddr = 'recipient@somewhere.com';

# The the UIDLs for all email in the POP3 mailbox.
$stUidls = chilkat::CkStringTable->new();
$success = $mailman->FetchUidls($stUidls);
if ($success == 0) {
    print $mailman->lastErrorText() . "\r\n";
    exit;
}

# Just mark messages for delete, then delete at the end.
$mailman->put_ImmediateDelete(0);

# Download the email from the server.  Call FetchMimeBd
# because we don't want to load the emails into email objects.
# (We'll delete the emails that are forwarded without error.)
$bdMime = chilkat::CkBinData->new();

$count = $stUidls->get_Count();
$i = 0;
while ($i < $count) {
    $uidl = $stUidls->stringAt($i);
    print "UIDL: " . $uidl . "\r\n";

    $success = $mailman->FetchMimeBd($uidl,$bdMime);
    if ($success == 0) {
        print $mailman->lastErrorText() . "\r\n";
        exit;
    }

    $success = $mailman->SendMimeBd($fromAddr,$toAddr,$bdMime);
    if ($success == 0) {
        print $mailman->lastErrorText() . "\r\n";
        exit;
    }

    $success = $mailman->DeleteByUidl($uidl);
    if ($success == 0) {
        print $mailman->lastErrorText() . "\r\n";
        exit;
    }

    $i = $i + 1;
}

# Delete messages marked for delete.
$mailman->put_ImmediateDelete(1);
$success = $mailman->Pop3EndSession();
if ($success == 0) {
    print $mailman->lastErrorText() . "\r\n";
    exit;
}

print "Success." . "\r\n";