Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) Move Messages from one Mailbox to AnotherIf your IMAP server supports the MOVE capability, then it is possible to move messages from one mailbox (folder) to another. This example demonstrates the MOVE command using the SendRawCommand method. The IMAP MOVE Extension is documented in RFC 6851.
Use ChilkatAx-win32.pkg Procedure Test Handle hoImap Boolean iSuccess String sCaps Boolean iBReturnUids Variant vMsgSet Handle hoMsgSet String sSequenceSet Handle hoSbMoveCmd String sCmdResponse String sTemp1 Boolean bTemp1 // 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 // Use an implicit TLS connection. Set ComSsl Of hoImap To True Set ComPort Of hoImap To 993 Get ComConnect Of hoImap "MY-IMAP-DOMAIN" To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoImap To sTemp1 Showln sTemp1 Procedure_Return End // Authenticate Get ComLogin Of hoImap "MY-IMAP-LOGIN" "MY-IMAP-PASSWORD" To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoImap To sTemp1 Showln sTemp1 Procedure_Return End // Get the list of capabilities: Get ComCapability Of hoImap To sCaps Showln "Capabilities: " sCaps // Here is an example of the string returned: // * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 // UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT APPENDLIMIT=35882577 // LIST-EXTENDED LIST-STATUS Get ComHasCapability Of hoImap "MOVE" sCaps To bTemp1 If (bTemp1 <> True) Begin Showln "The IMAP server does not support the MOVE extension." Procedure_Return End Showln "Good, the MOVE extension is supported..." // Select a mailbox, search for some messages to get a sequence-set (i.e. a // range of message sequence numbers or UIDs. Then move these messages to another // mailbox. Get ComSelectMailbox Of hoImap "old" To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoImap To sTemp1 Showln sTemp1 Procedure_Return End // Get a set of message sequence numbers for all emails with "Gencer" in the FROM name/address. Move False To iBReturnUids Get ComSearch Of hoImap "FROM Gencer" iBReturnUids To vMsgSet If (IsComObject(vMsgSet)) Begin Get Create (RefClass(cComChilkatMessageSet)) To hoMsgSet Set pvComObject Of hoMsgSet To vMsgSet End Get ComLastMethodSuccess Of hoImap To bTemp1 If (bTemp1 <> True) Begin Get ComLastErrorText Of hoImap To sTemp1 Showln sTemp1 Procedure_Return End // The message set, as a compact string, will look something like this: // 1572,1876:1881,1883,1886,1895,1905:1906,1910:1911,1923,1959:1963 Get ComToCompactString Of hoMsgSet To sSequenceSet Showln sSequenceSet // Let's form our MOVE command. Get Create (RefClass(cComChilkatStringBuilder)) To hoSbMoveCmd If (Not(IsComObjectCreated(hoSbMoveCmd))) Begin Send CreateComObject of hoSbMoveCmd End Get ComAppend Of hoSbMoveCmd "MOVE " To iSuccess Get ComAppend Of hoSbMoveCmd sSequenceSet To iSuccess Get ComAppend Of hoSbMoveCmd " old/gencer" To iSuccess Get ComGetAsString Of hoSbMoveCmd To sTemp1 Showln "Sending: " sTemp1 Get ComGetAsString Of hoSbMoveCmd To sTemp1 Get ComSendRawCommand Of hoImap sTemp1 To sCmdResponse Get ComLastMethodSuccess Of hoImap To bTemp1 If (bTemp1 <> True) Begin Get ComLastErrorText Of hoImap To sTemp1 Showln sTemp1 Procedure_Return End Showln sCmdResponse // The response looks like this: // * 1572 EXPUNGE // * 1875 EXPUNGE // * 1875 EXPUNGE // * 1875 EXPUNGE // * 1875 EXPUNGE // * 1875 EXPUNGE // * 1875 EXPUNGE // * 1876 EXPUNGE // * 1878 EXPUNGE // * 1886 EXPUNGE // * 1895 EXPUNGE // * 1895 EXPUNGE // * 1898 EXPUNGE // * 1898 EXPUNGE // * 1909 EXPUNGE // * 1944 EXPUNGE // * 1944 EXPUNGE // * 1944 EXPUNGE // * 1944 EXPUNGE // * 1944 EXPUNGE // * 2274 EXISTS // aaaf OK [COPYUID 62 1582,1886:1891,1893,1896,1905,1915:1916,1920:1921,1933,1974:1978 20,17,16,15,14,13,12,10:11,9,19,18,8,7,6,5,4,3,2,1] (Success) // The last line should indicate OK. // Note: Starting in Chilkat v9.5.0.62, the Chilkat will add a MoveMessages method to make this easier. // Until then, or if using an older version of Chilkat, the response will need to be parsed for "OK" or "BAD". Send Destroy of hoMsgSet // Disconnect from the IMAP server. Get ComDisconnect Of hoImap To iSuccess Showln "All Done." End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.