DataFlex
DataFlex
Fetch All Messages from a POP3 Mailbox
See more POP3 Examples
Demonstrates the Chilkat MailMan.FetchAll method, which retrieves messages from the POP3 mailbox and appends them to an EmailBundle. The arguments are keepOnServer, headersOnly, numBodyLines, and the EmailBundle that receives the emails. This example downloads every message and iterates the bundle, printing each subject.
Background: An
EmailBundle is Chilkat's container for a set of downloaded messages — you read its MessageCount and pull out each Email with EmailAt. The three flags control how much is fetched: keepOnServer leaves copies in the mailbox rather than removing them, headersOnly downloads just the headers for a fast preview, and numBodyLines can fetch a partial body (0 means the whole body). Traditional POP3 clients download and delete; setting keepOnServer to true supports "leave mail on server" behavior.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoMailman
Variant vBundle
Handle hoBundle
Integer n
Variant vEmail
Handle hoEmail
Integer i
String sTemp1
Move False To iSuccess
// Demonstrates the MailMan.FetchAll method, which retrieves messages from the POP3 mailbox
// and appends them to an EmailBundle. The arguments are keepOnServer, headersOnly,
// numBodyLines, and the EmailBundle that receives the emails.
Get Create (RefClass(cComChilkatMailMan)) To hoMailman
If (Not(IsComObjectCreated(hoMailman))) Begin
Send CreateComObject of hoMailman
End
// Configure the POP3 server connection.
Set ComMailHost Of hoMailman To "pop.example.com"
Set ComMailPort Of hoMailman To 995
Set ComPopSsl Of hoMailman To True
Set ComPopUsername Of hoMailman To "user@example.com"
Set ComPopPassword Of hoMailman To "myPassword"
// Fetch all messages, leaving them on the server, with full bodies.
// keepOnServer=True, headersOnly=False (fetch the entire message).
// Note: numBodyLines only applies when headersOnly is True (it sets how many lines of the
// body to include along with the headers). When headersOnly is False, the entire message
// is fetched and numBodyLines is ignored.
Get Create (RefClass(cComChilkatEmailBundle)) To hoBundle
If (Not(IsComObjectCreated(hoBundle))) Begin
Send CreateComObject of hoBundle
End
Get pvComObject of hoBundle to vBundle
Get ComFetchAll Of hoMailman True False 0 vBundle To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoMailman To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComMessageCount Of hoBundle To n
Showln "Fetched " n " messages."
Get Create (RefClass(cComChilkatEmail)) To hoEmail
If (Not(IsComObjectCreated(hoEmail))) Begin
Send CreateComObject of hoEmail
End
For i From 0 To (n - 1)
Get pvComObject of hoEmail to vEmail
Get ComEmailAt Of hoBundle i vEmail To iSuccess
Get ComSubject Of hoEmail To sTemp1
Showln sTemp1
Loop
// 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.
End_Procedure