Perl
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
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";