PureBasic
PureBasic
Mark IMAP Email as Read/Unread (Seen/Unseen)
Demonstrates how to mark emails as read or unread.Chilkat PureBasic Downloads
IncludeFile "CkEmail.pb"
IncludeFile "CkImap.pb"
Procedure ChilkatExample()
success.i = 0
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
imap.i = CkImap::ckCreate()
If imap.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Connect to an IMAP server.
; Use TLS
CkImap::setCkSsl(imap, 1)
CkImap::setCkPort(imap, 993)
success = CkImap::ckConnect(imap,"imap.example.com")
If success = 0
Debug CkImap::ckLastErrorText(imap)
CkImap::ckDispose(imap)
ProcedureReturn
EndIf
; Login
success = CkImap::ckLogin(imap,"myLogin","myPassword")
If success = 0
Debug CkImap::ckLastErrorText(imap)
CkImap::ckDispose(imap)
ProcedureReturn
EndIf
; Select an IMAP mailbox
success = CkImap::ckSelectMailbox(imap,"Inbox")
If success = 0
Debug CkImap::ckLastErrorText(imap)
CkImap::ckDispose(imap)
ProcedureReturn
EndIf
; Set PeekMode so that downloaded messages are not
; automatically marked as seen.
CkImap::setCkPeekMode(imap, 1)
; The NumMessages property contains the number of messages
; in the currently selected mailbox.
numMsgs.i = CkImap::ckNumMessages(imap)
If numMsgs = 0
CkImap::ckDispose(imap)
ProcedureReturn
EndIf
email.i = CkEmail::ckCreate()
If email.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
i.i
For i = 1 To numMsgs
; Download each email by sequence number (not UID)
success = CkImap::ckFetchEmail(imap,0,i,0,email)
If success = 0
Debug CkImap::ckLastErrorText(imap)
CkImap::ckDispose(imap)
CkEmail::ckDispose(email)
ProcedureReturn
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:
bIsUid.i = 0
; Set the SEEN flag = 1 to mark the email as SEEN,
; or set it to 0 to mark it as not-seen.
success = CkImap::ckSetFlag(imap,i,bIsUid,"SEEN",1)
If success = 0
Debug CkImap::ckLastErrorText(imap)
CkImap::ckDispose(imap)
CkEmail::ckDispose(email)
ProcedureReturn
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:
success = CkImap::ckSetMailFlag(imap,email,"SEEN",1)
If success = 0
Debug CkImap::ckLastErrorText(imap)
CkImap::ckDispose(imap)
CkEmail::ckDispose(email)
ProcedureReturn
EndIf
Next
; Disconnect from the IMAP server.
success = CkImap::ckDisconnect(imap)
CkImap::ckDispose(imap)
CkEmail::ckDispose(email)
ProcedureReturn
EndProcedure