Visual FoxPro
Visual FoxPro
Mark IMAP Email as Read/Unread (Seen/Unseen)
Demonstrates how to mark emails as read or unread.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loImap
LOCAL lnNumMsgs
LOCAL loEmail
LOCAL i
LOCAL lnBIsUid
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
* Set PeekMode so that downloaded messages are not
* automatically marked as seen.
loImap.PeekMode = 1
* The NumMessages property contains the number of messages
* in the currently selected mailbox.
lnNumMsgs = loImap.NumMessages
IF (lnNumMsgs = 0) THEN
RELEASE loImap
CANCEL
ENDIF
loEmail = CreateObject('Chilkat.Email')
FOR i = 1 TO lnNumMsgs
* Download each email by sequence number (not UID)
lnSuccess = loImap.FetchEmail(0,i,0,loEmail)
IF (lnSuccess = 0) THEN
? loImap.LastErrorText
RELEASE loImap
RELEASE loEmail
CANCEL
ENDIF
* If desired, mark the email as SEEN. There are two
* ways to do it:
* 1) Set the flag directly by using the sequence number
* Indicate that we are passing a sequence number and
* not a UID:
lnBIsUid = 0
* Set the SEEN flag = 1 to mark the email as SEEN,
* or set it to 0 to mark it as not-seen.
lnSuccess = loImap.SetFlag(i,lnBIsUid,"SEEN",1)
IF (lnSuccess = 0) THEN
? loImap.LastErrorText
RELEASE loImap
RELEASE loEmail
CANCEL
ENDIF
* 2) Alternatively, we can use the email object.
* When an email is downloaded from the IMAP server
* Chilkat will add a "ckx-imap-uid" header to the email.
* This makes it possible to know the UID associated with
* the email. (This is not the sequence number, which may change
* from session to session, but the UID which does not change.
* The SetMailFlag method is identical to SetFlag, except
* it gets the UID from the ckx-imap-uid header.
* For example:
lnSuccess = loImap.SetMailFlag(loEmail,"SEEN",1)
IF (lnSuccess = 0) THEN
? loImap.LastErrorText
RELEASE loImap
RELEASE loEmail
CANCEL
ENDIF
NEXT
* Disconnect from the IMAP server.
lnSuccess = loImap.Disconnect()
RELEASE loImap
RELEASE loEmail