DataFlex
DataFlex
Mark IMAP Email as Read/Unread (Seen/Unseen)
Demonstrates how to mark emails as read or unread.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoImap
Integer iNumMsgs
Variant vEmail
Handle hoEmail
Integer i
Boolean iBIsUid
String sTemp1
Move False To iSuccess
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatImap)) To hoImap
If (Not(IsComObjectCreated(hoImap))) Begin
Send CreateComObject of hoImap
End
// Connect to an IMAP server.
// Use TLS
Set ComSsl Of hoImap To True
Set ComPort Of hoImap To 993
Get ComConnect Of hoImap "imap.example.com" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
// Login
Get ComLogin Of hoImap "myLogin" "myPassword" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
// Select an IMAP mailbox
Get ComSelectMailbox Of hoImap "Inbox" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
// Set PeekMode so that downloaded messages are not
// automatically marked as seen.
Set ComPeekMode Of hoImap To True
// The NumMessages property contains the number of messages
// in the currently selected mailbox.
Get ComNumMessages Of hoImap To iNumMsgs
If (iNumMsgs = 0) Begin
Procedure_Return
End
Get Create (RefClass(cComChilkatEmail)) To hoEmail
If (Not(IsComObjectCreated(hoEmail))) Begin
Send CreateComObject of hoEmail
End
For i From 1 To iNumMsgs
// Download each email by sequence number (not UID)
Get pvComObject of hoEmail to vEmail
Get ComFetchEmail Of hoImap False i False vEmail To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
// 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:
Move False To iBIsUid
// Set the SEEN flag = 1 to mark the email as SEEN,
// or set it to 0 to mark it as not-seen.
Get ComSetFlag Of hoImap i iBIsUid "SEEN" 1 To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
// 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:
Get pvComObject of hoEmail to vEmail
Get ComSetMailFlag Of hoImap vEmail "SEEN" 1 To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
Loop
// Disconnect from the IMAP server.
Get ComDisconnect Of hoImap To iSuccess
End_Procedure