DataFlex
DataFlex
Delete All IMAP Email
Demonstrates two ways to delete all email in a mailbox on an IMAP server.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoImap
Variant vMessageSet
Handle hoMessageSet
Integer i
Integer n
String sTemp1
Integer iTemp1
Boolean bTemp1
Move False To iSuccess
// This example requires 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
// Turn on session logging:
Set ComKeepSessionLog Of hoImap To True
// 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 "myLogin" "myPassword" 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.RubyMail" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
// Get the complete set of Uids for email in the selected mailbox.
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" True vMessageSet To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
// Set the Deleted flag for each message.
// (ExpungeAndClose must be called to finalize the delete.)
Get pvComObject of hoMessageSet to vMessageSet
Get ComSetFlags Of hoImap vMessageSet "Deleted" 1 To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
// Alternatively, the Deleted flag may be set for each UID
// individiually, but this is less efficient:
Move 0 To i
Get ComCount Of hoMessageSet To n
While (i < n)
Get ComGetId Of hoMessageSet i To iTemp1
Get ComHasUids Of hoMessageSet To bTemp1
Get ComSetFlag Of hoImap iTemp1 bTemp1 "Deleted" 1 To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
Move (i + 1) To i
Loop
// Expunge and close the mailbox.
Get ComExpungeAndClose Of hoImap To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
// Display the session log.
Get ComSessionLog Of hoImap To sTemp1
Showln sTemp1
// Disconnect from the IMAP server.
Get ComDisconnect Of hoImap To iSuccess
End_Procedure