DataFlex
DataFlex
Fetch 1st N Headers of Search Results
Calls Search to get a message set, then downloads the 1st N messages in the message set. There are two equivalent ways of doing it: (1) iterate from 0 to N-1 and download each message individually, or (2) create a new message set that contains the 1st N messages and pass it to FetchHeaders. Both are demonstrated here.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoImap
Boolean iFetchUids
Variant vMessageSet
Handle hoMessageSet
Integer iNumFound
Integer iUpperBound
Integer i
Boolean iBUid
Boolean iHeaderOnly
Variant vEmail
Handle hoEmail
String sTemp1
Integer iTemp1
Move False To iSuccess
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatImap)) To hoImap
If (Not(IsComObjectCreated(hoImap))) Begin
Send CreateComObject of hoImap
End
// Connect to an IMAP server.
// Use TLS
Set ComSsl Of hoImap To True
Set ComPort Of hoImap To 993
Get ComConnect Of hoImap "imap.example.com" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
// Login
Get ComLogin Of hoImap "****" "****" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
// Select an IMAP mailbox
Get ComSelectMailbox Of hoImap "Inbox" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
// Get the message IDs of all the emails in the mailbox
// We can choose to fetch UIDs or sequence numbers.
Move True To iFetchUids
Get Create (RefClass(cComChilkatMessageSet)) To hoMessageSet
If (Not(IsComObjectCreated(hoMessageSet))) Begin
Send CreateComObject of hoMessageSet
End
Get pvComObject of hoMessageSet to vMessageSet
Get ComQueryMbx Of hoImap "ALL" iFetchUids vMessageSet To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComCount Of hoMessageSet To iNumFound
If (iNumFound = 0) Begin
Showln "No messages found."
Procedure_Return
End
// Get the 1st 10 messages in messageSet.
Move 10 To iUpperBound
If (iNumFound < iUpperBound) Begin
Move iNumFound To iUpperBound
End
Move 0 To i
Get ComHasUids Of hoMessageSet To iBUid
Move True To iHeaderOnly
Get Create (RefClass(cComChilkatEmail)) To hoEmail
If (Not(IsComObjectCreated(hoEmail))) Begin
Send CreateComObject of hoEmail
End
While (i < iUpperBound)
Get ComGetId Of hoMessageSet i To iTemp1
Get pvComObject of hoEmail to vEmail
Get ComFetchEmail Of hoImap iHeaderOnly iTemp1 iBUid vEmail To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComSubject Of hoEmail To sTemp1
Showln i ": " sTemp1
Move (i + 1) To i
Loop
// Disconnect from the IMAP server.
Get ComDisconnect Of hoImap To iSuccess
End_Procedure