Visual FoxPro
Visual FoxPro
Delete Email Individually (One at a time) from an IMAP Mailbox
Downloads email from an IMAP mailbox and deletes emails individually (one by one).Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loImap
LOCAL lnFetchUids
LOCAL loMessageSet
LOCAL loBundle
LOCAL lnHeadersOnly
LOCAL loEmail
LOCAL i
LOCAL lnNumEmails
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
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
* We can choose to fetch UIDs or sequence numbers.
lnFetchUids = 1
* Get the message IDs of all the emails in the mailbox
loMessageSet = CreateObject('Chilkat.MessageSet')
lnSuccess = loImap.QueryMbx("ALL",lnFetchUids,loMessageSet)
IF (lnSuccess = 0) THEN
? loImap.LastErrorText
RELEASE loImap
RELEASE loMessageSet
CANCEL
ENDIF
* Fetch the emails into a bundle object:
loBundle = CreateObject('Chilkat.EmailBundle')
lnHeadersOnly = 0
lnSuccess = loImap.FetchMsgSet(lnHeadersOnly,loMessageSet,loBundle)
IF (lnSuccess = 0) THEN
? loImap.LastErrorText
RELEASE loImap
RELEASE loMessageSet
RELEASE loBundle
CANCEL
ENDIF
* To mark a complete set of emails for deletion, call SetFlags:
lnSuccess = loImap.SetFlags(loMessageSet,"Deleted",1)
IF (lnSuccess = 0) THEN
? loImap.LastErrorText
RELEASE loImap
RELEASE loMessageSet
RELEASE loBundle
CANCEL
ENDIF
* Messages can also be marked for deletion individually:
* Loop over the bundle and mark each message for deletion.
loEmail = CreateObject('Chilkat.Email')
i = 0
lnNumEmails = loBundle.MessageCount
DO WHILE i < lnNumEmails
loBundle.EmailAt(i,loEmail)
? loEmail.From
? loEmail.Subject
* To delete this email, set the "Deleted" flag to 1.
* The email is not actually deleted until Expunge or
* ExpungeAndClose is called.
lnSuccess = loImap.SetMailFlag(loEmail,"Deleted",1)
IF (lnSuccess = 0) THEN
? loImap.LastErrorText
RELEASE loImap
RELEASE loMessageSet
RELEASE loBundle
RELEASE loEmail
CANCEL
ENDIF
? "--"
i = i + 1
ENDDO
lnSuccess = loImap.ExpungeAndClose()
IF (lnSuccess = 0) THEN
? loImap.LastErrorText
RELEASE loImap
RELEASE loMessageSet
RELEASE loBundle
RELEASE loEmail
CANCEL
ENDIF
* Disconnect from the IMAP server.
lnSuccess = loImap.Disconnect()
RELEASE loImap
RELEASE loMessageSet
RELEASE loBundle
RELEASE loEmail