Sample code for 30+ languages & platforms
Visual FoxPro

IMAP Delete Old Email (before a specified date)

See more IMAP Examples

Demonstrates how to delete email older than a particular date.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loImap
LOCAL lnFetchUids
LOCAL loMessageSet
LOCAL loEmail
LOCAL i
LOCAL lnCount
LOCAL lnHeaderOnly

lnSuccess = 0

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

loImap = CreateObject('Chilkat.Imap')

* Connect to an IMAP server.
* Use TLS
loImap.Ssl = 1
loImap.Port = 993
* Use your IMAP server domain.  This example 
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")
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    CANCEL
ENDIF

* Get message ID's for emails older than 1/1/2025
lnFetchUids = 1
loMessageSet = CreateObject('Chilkat.MessageSet')
lnSuccess = loImap.QueryMbx("SENTBEFORE 01-Jan-2025",lnFetchUids,loMessageSet)
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    RELEASE loMessageSet
    CANCEL
ENDIF

* If desired, we can examine the Subject of each email to be deleted..
loEmail = CreateObject('Chilkat.Email')
i = 0
lnCount = loMessageSet.Count
lnHeaderOnly = 1

DO WHILE i < lnCount
    lnSuccess = loImap.FetchEmail(lnHeaderOnly,loMessageSet.GetId(i),1,loEmail)
    IF (lnSuccess = 0) THEN
        ? loImap.LastErrorText
        RELEASE loImap
        RELEASE loMessageSet
        RELEASE loEmail
        CANCEL
    ENDIF

    ? loEmail.LocalDateStr
    ? loEmail.Subject

    i = i + 1
ENDDO

* Set the Deleted flag for each message:
lnSuccess = loImap.SetFlags(loMessageSet,"Deleted",1)
IF (lnSuccess = 0) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    RELEASE loMessageSet
    RELEASE loEmail
    CANCEL
ENDIF

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

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

RELEASE loImap
RELEASE loMessageSet
RELEASE loEmail