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
(Swift 2) Copy Email from one IMAP Account to AnotherDemonstrates how to copy the email in a mailbox from one account to another.
func chilkatTest() { let imapSrc = CkoImap() // 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 var success: Bool = imapSrc.Connect("MY-IMAP-DOMAIN") if success != true { print("\(imapSrc.LastErrorText)") return } // Login to the source IMAP server success = imapSrc.Login("MY-IMAP-LOGIN", password: "MY-IMAP-PASSWORD") if success != true { print("\(imapSrc.LastErrorText)") return } let imapDest = CkoImap() // Connect to our destination IMAP server. imapDest.Ssl = true imapDest.Port = 993 success = imapDest.Connect("MY-IMAP-DOMAIN2") if success != true { print("\(imapDest.LastErrorText)") return } // Login to the destination IMAP server success = imapDest.Login("MY-IMAP-LOGIN2", password: "MY-IMAP-PASSWORD2") if success != true { print("\(imapDest.LastErrorText)") return } // Select a source IMAP mailbox on the source IMAP server success = imapSrc.SelectMailbox("Inbox") if success != true { print("\(imapSrc.LastErrorText)") return } var fetchUids: Bool = true // Get the set of UIDs for all emails on the source server. var mset: CkoMessageSet? = imapSrc.Search("ALL", bUid: fetchUids) if imapSrc.LastMethodSuccess != true { print("\(imapSrc.LastErrorText)") return } // Load the complete set of UIDs that were previously copied. // We dont' want to copy any of these to the destination. let fac = CkoFileAccess() let msetAlreadyCopied = CkoMessageSet() var strMsgSet: String? = fac.ReadEntireTextFile("qa_cache/saAlreadyLoaded.txt", charset: "utf-8") if fac.LastMethodSuccess == true { msetAlreadyCopied.FromCompactString(strMsgSet) } var numUids: Int = mset!.Count.intValue let sbFlags = CkoStringBuilder() var i: Int = 0 while i < numUids { // If this UID was not already copied... var uid: Int = mset!.GetId(i).intValue if !msetAlreadyCopied.ContainsId(uid) { print("copying \(uid)...") // Get the flags. var flags: String? = imapSrc.FetchFlags(uid, bUid: true) if imapSrc.LastMethodSuccess == false { print("\(imapSrc.LastErrorText)") return } sbFlags.SetString(flags) // Get the MIME of this email from the source. var mimeStr: String? = imapSrc.FetchSingleAsMime(uid, bUid: true) if imapSrc.LastMethodSuccess == false { print("\(imapSrc.LastErrorText)") return } var seen: Bool = sbFlags.Contains("\\Seen", caseSensitive: false) var flagged: Bool = sbFlags.Contains("\\Flagged", caseSensitive: false) var answered: Bool = sbFlags.Contains("\\Answered", caseSensitive: false) var draft: Bool = sbFlags.Contains("\\Draft", caseSensitive: false) success = imapDest.AppendMimeWithFlags("Inbox", mimeText: mimeStr, seen: seen, flagged: flagged, answered: answered, draft: draft) if success != true { print("\(imapDest.LastErrorText)") 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", fileData: strMsgSet, charset: "utf-8", includePreamble: false) } i = i + 1 } mset = nil // Disconnect from the IMAP servers. success = imapSrc.Disconnect() success = imapDest.Disconnect() } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.