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
(PowerShell) Copy Email from one IMAP Account to AnotherDemonstrates how to copy the email in a mailbox from one account to another.
Add-Type -Path "C:\chilkat\ChilkatDotNet47-9.5.0-x64\ChilkatDotNet47.dll" $imapSrc = New-Object Chilkat.Imap # This example assumes Chilkat Imap to have been previously unlocked. # See Unlock Imap for sample code. # Connect to our source IMAP server. $imapSrc.Ssl = $true $imapSrc.Port = 993 $success = $imapSrc.Connect("MY-IMAP-DOMAIN") if ($success -ne $true) { $($imapSrc.LastErrorText) exit } # Login to the source IMAP server $success = $imapSrc.Login("MY-IMAP-LOGIN","MY-IMAP-PASSWORD") if ($success -ne $true) { $($imapSrc.LastErrorText) exit } $imapDest = New-Object Chilkat.Imap # Connect to our destination IMAP server. $imapDest.Ssl = $true $imapDest.Port = 993 $success = $imapDest.Connect("MY-IMAP-DOMAIN2") if ($success -ne $true) { $($imapDest.LastErrorText) exit } # Login to the destination IMAP server $success = $imapDest.Login("MY-IMAP-LOGIN2","MY-IMAP-PASSWORD2") if ($success -ne $true) { $($imapDest.LastErrorText) exit } # Select a source IMAP mailbox on the source IMAP server $success = $imapSrc.SelectMailbox("Inbox") if ($success -ne $true) { $($imapSrc.LastErrorText) exit } $fetchUids = $true # Get the set of UIDs for all emails on the source server. $mset = $imapSrc.Search("ALL",$fetchUids) if ($imapSrc.LastMethodSuccess -ne $true) { $($imapSrc.LastErrorText) exit } # Load the complete set of UIDs that were previously copied. # We dont' want to copy any of these to the destination. $fac = New-Object Chilkat.FileAccess $msetAlreadyCopied = New-Object Chilkat.MessageSet $strMsgSet = $fac.ReadEntireTextFile("qa_cache/saAlreadyLoaded.txt","utf-8") if ($fac.LastMethodSuccess -eq $true) { $msetAlreadyCopied.FromCompactString($strMsgSet) } $numUids = $mset.Count $sbFlags = New-Object Chilkat.StringBuilder $i = 0 while ($i -lt $numUids) { # If this UID was not already copied... $uid = $mset.GetId($i) if (!$msetAlreadyCopied.ContainsId($uid)) { $("copying " + $uid + "...") # Get the flags. $flags = $imapSrc.FetchFlags($uid,$true) if ($imapSrc.LastMethodSuccess -eq $false) { $($imapSrc.LastErrorText) exit } $sbFlags.SetString($flags) # Get the MIME of this email from the source. $mimeStr = $imapSrc.FetchSingleAsMime($uid,$true) if ($imapSrc.LastMethodSuccess -eq $false) { $($imapSrc.LastErrorText) exit } $seen = $sbFlags.Contains("\\Seen",$false) $flagged = $sbFlags.Contains("\\Flagged",$false) $answered = $sbFlags.Contains("\\Answered",$false) $draft = $sbFlags.Contains("\\Draft",$false) $success = $imapDest.AppendMimeWithFlags("Inbox",$mimeStr,$seen,$flagged,$answered,$draft) if ($success -ne $true) { $($imapDest.LastErrorText) exit } # Update msetAlreadyCopied with the uid just copied. $msetAlreadyCopied.InsertId($uid) # Save at every iteration just in case there's a failure.. $strMsgSet = $msetAlreadyCopied.ToCompactString() $fac.WriteEntireTextFile("qa_cache/saAlreadyLoaded.txt",$strMsgSet,"utf-8",$false) } $i = $i + 1 } # Disconnect from the IMAP servers. $success = $imapSrc.Disconnect() $success = $imapDest.Disconnect() |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.