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
(Go) Copy Email from one IMAP Account to AnotherDemonstrates how to copy the email in a mailbox from one account to another.
imapSrc := chilkat.NewImap() // This example assumes Chilkat Imap to have been previously unlocked. // See Unlock Imap for sample code. // Connect to our source IMAP server. imapSrc.SetSsl(true) imapSrc.SetPort(993) success := imapSrc.Connect("MY-IMAP-DOMAIN") if success != true { fmt.Println(imapSrc.LastErrorText()) imapSrc.DisposeImap() return } // Login to the source IMAP server success = imapSrc.Login("MY-IMAP-LOGIN","MY-IMAP-PASSWORD") if success != true { fmt.Println(imapSrc.LastErrorText()) imapSrc.DisposeImap() return } imapDest := chilkat.NewImap() // Connect to our destination IMAP server. imapDest.SetSsl(true) imapDest.SetPort(993) success = imapDest.Connect("MY-IMAP-DOMAIN2") if success != true { fmt.Println(imapDest.LastErrorText()) imapSrc.DisposeImap() imapDest.DisposeImap() return } // Login to the destination IMAP server success = imapDest.Login("MY-IMAP-LOGIN2","MY-IMAP-PASSWORD2") if success != true { fmt.Println(imapDest.LastErrorText()) imapSrc.DisposeImap() imapDest.DisposeImap() return } // Select a source IMAP mailbox on the source IMAP server success = imapSrc.SelectMailbox("Inbox") if success != true { fmt.Println(imapSrc.LastErrorText()) imapSrc.DisposeImap() imapDest.DisposeImap() return } fetchUids := true // Get the set of UIDs for all emails on the source server. mset := imapSrc.Search("ALL",fetchUids) if imapSrc.LastMethodSuccess() != true { fmt.Println(imapSrc.LastErrorText()) imapSrc.DisposeImap() imapDest.DisposeImap() return } // Load the complete set of UIDs that were previously copied. // We dont' want to copy any of these to the destination. fac := chilkat.NewFileAccess() msetAlreadyCopied := chilkat.NewMessageSet() strMsgSet := fac.ReadEntireTextFile("qa_cache/saAlreadyLoaded.txt","utf-8") if fac.LastMethodSuccess() == true { msetAlreadyCopied.FromCompactString(*strMsgSet) } numUids := mset.Count() sbFlags := chilkat.NewStringBuilder() i := 0 for i < numUids { // If this UID was not already copied... uid := mset.GetId(i) if !msetAlreadyCopied.ContainsId(uid) { fmt.Println("copying ", uid, "...") // Get the flags. flags := imapSrc.FetchFlags(uid,true) if imapSrc.LastMethodSuccess() == false { fmt.Println(imapSrc.LastErrorText()) imapSrc.DisposeImap() imapDest.DisposeImap() fac.DisposeFileAccess() msetAlreadyCopied.DisposeMessageSet() sbFlags.DisposeStringBuilder() return } sbFlags.SetString(*flags) // Get the MIME of this email from the source. mimeStr := imapSrc.FetchSingleAsMime(uid,true) if imapSrc.LastMethodSuccess() == false { fmt.Println(imapSrc.LastErrorText()) imapSrc.DisposeImap() imapDest.DisposeImap() fac.DisposeFileAccess() msetAlreadyCopied.DisposeMessageSet() sbFlags.DisposeStringBuilder() return } 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 != true { fmt.Println(imapDest.LastErrorText()) imapSrc.DisposeImap() imapDest.DisposeImap() fac.DisposeFileAccess() msetAlreadyCopied.DisposeMessageSet() sbFlags.DisposeStringBuilder() return } // 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 } mset.DisposeMessageSet() // Disconnect from the IMAP servers. success = imapSrc.Disconnect() success = imapDest.Disconnect() imapSrc.DisposeImap() imapDest.DisposeImap() fac.DisposeFileAccess() msetAlreadyCopied.DisposeMessageSet() sbFlags.DisposeStringBuilder() |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.