(Tcl) Process Large POP3 Mailbox
Demonstrates how to read email from a mailbox that may contain a large number of emails. Note: This example requires Chilkat v11.0.0 or greater.
load ./chilkat.dll
set success 0
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
set mailman [new_CkMailMan]
CkMailMan_put_MailHost $mailman "pop.example.com"
CkMailMan_put_PopUsername $mailman "myLogin"
CkMailMan_put_PopPassword $mailman "myPassword"
CkMailMan_put_MailPort $mailman 995
CkMailMan_put_PopSsl $mailman 1
# Get the list of UIDLs for all emails in the mailbox.
set stUidls [new_CkStringTable]
set success [CkMailMan_FetchUidls $mailman $stUidls]
if {$success == 0} then {
puts [CkMailMan_lastErrorText $mailman]
delete_CkMailMan $mailman
delete_CkStringTable $stUidls
exit
}
# Download each email by UIDL.
set email [new_CkEmail]
set count [CkStringTable_get_Count $stUidls]
set i 0
while {$i < $count} {
# Download the full email.
set uidl [CkStringTable_stringAt $stUidls $i]
set success [CkMailMan_FetchByUidl $mailman $uidl 0 0 $email]
if {$success == 0} then {
puts [CkMailMan_lastErrorText $mailman]
delete_CkMailMan $mailman
delete_CkStringTable $stUidls
delete_CkEmail $email
exit
}
puts "$i"
puts "UIDL: $uidl"
puts "From: [CkEmail_from $email]"
puts "Subject: [CkEmail_subject $email]"
set i [expr $i + 1]
}
CkMailMan_Pop3EndSession $mailman
delete_CkMailMan $mailman
delete_CkStringTable $stUidls
delete_CkEmail $email
|