Perl
Chilkat2 Perl
Download the Full Version of a Partial Email
See more POP3 Examples
Demonstrates the Chilkat MailMan.FetchFull method, which downloads the complete version of a header-only or partial Email and stores it in a second Email. The full result includes the complete body and any attachments, and the partial email must retain its UIDL. This example previews message 1 (headers only) and then downloads it in full.
Background: A common pattern is to download headers first — cheap and fast — show the user a message list, and only pull the full content when a message is actually opened.
FetchFull completes that "download on demand" flow: given a partial email (which carries its UIDL), it fetches the rest from the server. This keeps bandwidth and latency low when browsing a large mailbox.Chilkat Perl Downloads
use strict;
use warnings;
use Chilkat2;
# Demonstrates the MailMan.FetchFull method, which downloads the complete version of a
# header-only or partial Email and stores it in a second Email. The full result includes
# the complete body and any attachments. The partial email must retain its UIDL.
my $mailman = Chilkat2::MailMan->new;
# Configure the POP3 server connection.
$mailman->MailHost('pop.example.com');
$mailman->MailPort(995);
$mailman->PopSsl(1);
$mailman->PopUsername('user@example.com');
$mailman->PopPassword('myPassword');
# First fetch message 1 as headers only (a fast preview). headerOnly=1.
my $partialEmail = Chilkat2::Email->new;
my $success = $mailman->FetchOne(1, 0, 1, $partialEmail);
if (!$success) {
print $mailman->LastErrorText, "\n";
exit;
}
print 'Preview subject: ', $partialEmail->Subject, "\n";
# Now download the complete message (body and attachments).
my $fullEmail = Chilkat2::Email->new;
$success = $mailman->FetchFull($partialEmail, $fullEmail);
if (!$success) {
print $mailman->LastErrorText, "\n";
exit;
}
print 'Full email NumAttachments: ', $fullEmail->NumAttachments, "\n";
# Note: Explicitly connecting/authenticating is optional. Chilkat MailMan automatically
# connects and authenticates -- using the property settings above -- whenever a server
# operation requires it. Calling the explicit connect/authenticate methods can still be
# helpful to determine whether a failure occurs while connecting or while authenticating.