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
(AutoIt) Copy Email from one IMAP Account to AnotherDemonstrates how to copy the email in a mailbox from one account to another.
$oImapSrc = ObjCreate("Chilkat.Imap") ; This example assumes Chilkat Imap to have been previously unlocked. ; See Unlock Imap for sample code. ; Connect to our source IMAP server. $oImapSrc.Ssl = True $oImapSrc.Port = 993 Local $bSuccess = $oImapSrc.Connect("MY-IMAP-DOMAIN") If ($bSuccess <> True) Then ConsoleWrite($oImapSrc.LastErrorText & @CRLF) Exit EndIf ; Login to the source IMAP server $bSuccess = $oImapSrc.Login("MY-IMAP-LOGIN","MY-IMAP-PASSWORD") If ($bSuccess <> True) Then ConsoleWrite($oImapSrc.LastErrorText & @CRLF) Exit EndIf $oImapDest = ObjCreate("Chilkat.Imap") ; Connect to our destination IMAP server. $oImapDest.Ssl = True $oImapDest.Port = 993 $bSuccess = $oImapDest.Connect("MY-IMAP-DOMAIN2") If ($bSuccess <> True) Then ConsoleWrite($oImapDest.LastErrorText & @CRLF) Exit EndIf ; Login to the destination IMAP server $bSuccess = $oImapDest.Login("MY-IMAP-LOGIN2","MY-IMAP-PASSWORD2") If ($bSuccess <> True) Then ConsoleWrite($oImapDest.LastErrorText & @CRLF) Exit EndIf ; Select a source IMAP mailbox on the source IMAP server $bSuccess = $oImapSrc.SelectMailbox("Inbox") If ($bSuccess <> True) Then ConsoleWrite($oImapSrc.LastErrorText & @CRLF) Exit EndIf Local $bFetchUids = True ; Get the set of UIDs for all emails on the source server. Local $oMset = $oImapSrc.Search("ALL",$bFetchUids) If ($oImapSrc.LastMethodSuccess <> True) Then ConsoleWrite($oImapSrc.LastErrorText & @CRLF) Exit EndIf ; Load the complete set of UIDs that were previously copied. ; We dont' want to copy any of these to the destination. $oFac = ObjCreate("Chilkat.FileAccess") $oMsetAlreadyCopied = ObjCreate("Chilkat.MessageSet") Local $strMsgSet = $oFac.ReadEntireTextFile("qa_cache/saAlreadyLoaded.txt","utf-8") If ($oFac.LastMethodSuccess = True) Then $oMsetAlreadyCopied.FromCompactString($strMsgSet) EndIf Local $iNumUids = $oMset.Count $oSbFlags = ObjCreate("Chilkat.StringBuilder") Local $i = 0 While $i < $iNumUids ; If this UID was not already copied... Local $iUid = $oMset.GetId($i) If (Not $oMsetAlreadyCopied.ContainsId($iUid)) Then ConsoleWrite("copying " & $iUid & "..." & @CRLF) ; Get the flags. Local $sFlags = $oImapSrc.FetchFlags($iUid,True) If ($oImapSrc.LastMethodSuccess = False) Then ConsoleWrite($oImapSrc.LastErrorText & @CRLF) Exit EndIf $oSbFlags.SetString($sFlags) ; Get the MIME of this email from the source. Local $sMimeStr = $oImapSrc.FetchSingleAsMime($iUid,True) If ($oImapSrc.LastMethodSuccess = False) Then ConsoleWrite($oImapSrc.LastErrorText & @CRLF) Exit EndIf Local $bSeen = $oSbFlags.Contains("\Seen",False) Local $bFlagged = $oSbFlags.Contains("\Flagged",False) Local $bAnswered = $oSbFlags.Contains("\Answered",False) Local $bDraft = $oSbFlags.Contains("\Draft",False) $bSuccess = $oImapDest.AppendMimeWithFlags("Inbox",$sMimeStr,$bSeen,$bFlagged,$bAnswered,$bDraft) If ($bSuccess <> True) Then ConsoleWrite($oImapDest.LastErrorText & @CRLF) Exit EndIf ; Update msetAlreadyCopied with the uid just copied. $oMsetAlreadyCopied.InsertId $iUid ; Save at every iteration just in case there's a failure.. $strMsgSet = $oMsetAlreadyCopied.ToCompactString() $oFac.WriteEntireTextFile("qa_cache/saAlreadyLoaded.txt",$strMsgSet,"utf-8",False) EndIf $i = $i + 1 Wend ; Disconnect from the IMAP servers. $bSuccess = $oImapSrc.Disconnect() $bSuccess = $oImapDest.Disconnect() |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.