Sample code for 30+ languages & platforms
Visual FoxPro

Delete All IMAP Email

Demonstrates two ways to delete all email in a mailbox on an IMAP server.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loImap
LOCAL loMessageSet
LOCAL i
LOCAL n

lnSuccess = 0

* This example requires the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.

loImap = CreateObject('Chilkat.Imap')

* Turn on session logging:
loImap.KeepSessionLog = 1

* Connect to an IMAP server.
* Use TLS
loImap.Ssl = 1
loImap.Port = 993
lnSuccess = loImap.Connect("imap.example.com")
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    CANCEL
ENDIF

* Login
lnSuccess = loImap.Login("myLogin","myPassword")
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    CANCEL
ENDIF

* Select an IMAP mailbox
lnSuccess = loImap.SelectMailbox("Inbox.RubyMail")
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    CANCEL
ENDIF

* Get the complete set of Uids for email in the selected mailbox.
loMessageSet = CreateObject('Chilkat.MessageSet')
lnSuccess = loImap.QueryMbx("ALL",1,loMessageSet)
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    RELEASE loMessageSet
    CANCEL
ENDIF

* Set the Deleted flag for each message.
* (ExpungeAndClose must be called to finalize the delete.)
lnSuccess = loImap.SetFlags(loMessageSet,"Deleted",1)
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    RELEASE loMessageSet
    CANCEL
ENDIF

* Alternatively, the Deleted flag may be set for each UID
* individiually, but this is less efficient:
i = 0
n = loMessageSet.Count
DO WHILE i < n
    lnSuccess = loImap.SetFlag(loMessageSet.GetId(i),loMessageSet.HasUids,"Deleted",1)
    IF (lnSuccess = 0) THEN
        ? loImap.LastErrorText
        RELEASE loImap
        RELEASE loMessageSet
        CANCEL
    ENDIF

    i = i + 1
ENDDO

* Expunge and close the mailbox.
lnSuccess = loImap.ExpungeAndClose()
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    RELEASE loMessageSet
    CANCEL
ENDIF

* Display the session log.
? loImap.SessionLog

* Disconnect from the IMAP server.
lnSuccess = loImap.Disconnect()

RELEASE loImap
RELEASE loMessageSet