DataFlex
DataFlex
IMAP Copy Email from Selected Folder to Another Folder
Copies an email from the selected mailbox (folder) to another mailbox (folder).Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoImap
Boolean iFetchUids
String sCriteria
Variant vMessageSet
Handle hoMessageSet
String sTemp1
Integer iTemp1
Boolean bTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// This example copies an email from one mailbox to another.
Get Create (RefClass(cComChilkatImap)) To hoImap
If (Not(IsComObjectCreated(hoImap))) Begin
Send CreateComObject of hoImap
End
// Turn on session logging for debugging.
Set ComKeepSessionLog Of hoImap To True
// Connect using 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
// Authenticate
Get ComLogin Of hoImap "email_account_login" "email_account_password" 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
// Search for messages having "Test email" in the subject.
Move True To iFetchUids
Move 'SUBJECT "Test email"' To sCriteria
Get Create (RefClass(cComChilkatMessageSet)) To hoMessageSet
If (Not(IsComObjectCreated(hoMessageSet))) Begin
Send CreateComObject of hoMessageSet
End
Get pvComObject of hoMessageSet to vMessageSet
Get ComQueryMbx Of hoImap sCriteria iFetchUids vMessageSet To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
Procedure_Return
End
// Assuming we have 1 or more messages in the set, copy the 1st one to the folder "Inbox.testFolder"
Get ComCount Of hoMessageSet To iTemp1
If (iTemp1 > 0) Begin
Get ComGetId Of hoMessageSet 0 To iTemp1
Get ComHasUids Of hoMessageSet To bTemp1
Get ComCopy Of hoImap iTemp1 bTemp1 "Inbox/testFolder" To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoImap To sTemp1
Showln sTemp1
End
End
Get ComSessionLog Of hoImap To sTemp1
Showln sTemp1
Showln "OK"
// Sample sessiong log:
// ----INFO----
// Connecting to IMAP server at outlook.office365.com:993
// ----IMAP RESPONSE----
// * OK The Microsoft Exchange IMAP4 service is ready. [QgBMADAAUABSADAAMQAwADIAQwBBADAAMAA3ADAALgBwAHIAbwBkAC4AZQB4AGMAaABhAG4AZwBlAGwAYQBiAHMALgBjAG8AbQA=]
// ----IMAP REQUEST----
// aaab LOGIN "chilkat@live.com"
// ----IMAP RESPONSE----
// aaab OK LOGIN completed.
// ----IMAP REQUEST----
// aaac SELECT "Inbox"
// ----IMAP RESPONSE----
// * 28 EXISTS
// * 0 RECENT
// * FLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent)
// * OK [PERMANENTFLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent)] Permanent flags
// * OK [UNSEEN 23] Is the first unseen message
// * OK [UIDVALIDITY 14] UIDVALIDITY value
// * OK [UIDNEXT 6416] The next unique identifier value
// aaac OK [READ-WRITE] SELECT completed.
// ----IMAP REQUEST----
// aaad UID SEARCH SUBJECT "Test email"
// ----IMAP RESPONSE----
// * SEARCH 6414
// aaad OK SEARCH completed.
// ----IMAP REQUEST----
// aaae UID COPY 6414 "Inbox/testFolder"
// ----IMAP RESPONSE----
// aaae OK [COPYUID 180 6414 1] COPY completed.
//
// OK
End_Procedure