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
(Lianja) Copy Email from one IMAP Account to AnotherDemonstrates how to copy the email in a mailbox from one account to another.
loImapSrc = createobject("CkImap") // This example assumes Chilkat Imap to have been previously unlocked. // See Unlock Imap for sample code. // Connect to our source IMAP server. loImapSrc.Ssl = .T. loImapSrc.Port = 993 llSuccess = loImapSrc.Connect("MY-IMAP-DOMAIN") if (llSuccess <> .T.) then ? loImapSrc.LastErrorText release loImapSrc return endif // Login to the source IMAP server llSuccess = loImapSrc.Login("MY-IMAP-LOGIN","MY-IMAP-PASSWORD") if (llSuccess <> .T.) then ? loImapSrc.LastErrorText release loImapSrc return endif loImapDest = createobject("CkImap") // Connect to our destination IMAP server. loImapDest.Ssl = .T. loImapDest.Port = 993 llSuccess = loImapDest.Connect("MY-IMAP-DOMAIN2") if (llSuccess <> .T.) then ? loImapDest.LastErrorText release loImapSrc release loImapDest return endif // Login to the destination IMAP server llSuccess = loImapDest.Login("MY-IMAP-LOGIN2","MY-IMAP-PASSWORD2") if (llSuccess <> .T.) then ? loImapDest.LastErrorText release loImapSrc release loImapDest return endif // Select a source IMAP mailbox on the source IMAP server llSuccess = loImapSrc.SelectMailbox("Inbox") if (llSuccess <> .T.) then ? loImapSrc.LastErrorText release loImapSrc release loImapDest return endif llFetchUids = .T. // Get the set of UIDs for all emails on the source server. loMset = loImapSrc.Search("ALL",llFetchUids) if (loImapSrc.LastMethodSuccess <> .T.) then ? loImapSrc.LastErrorText release loImapSrc release loImapDest return endif // Load the complete set of UIDs that were previously copied. // We dont' want to copy any of these to the destination. loFac = createobject("CkFileAccess") loMsetAlreadyCopied = createobject("CkMessageSet") lcStrMsgSet = loFac.ReadEntireTextFile("qa_cache/saAlreadyLoaded.txt","utf-8") if (loFac.LastMethodSuccess = .T.) then loMsetAlreadyCopied.FromCompactString(lcStrMsgSet) endif lnNumUids = loMset.Count loSbFlags = createobject("CkStringBuilder") i = 0 do while i < lnNumUids // If this UID was not already copied... lnUid = loMset.GetId(i) if (not loMsetAlreadyCopied.ContainsId(lnUid)) then ? "copying " + str(lnUid) + "..." // Get the flags. lcFlags = loImapSrc.FetchFlags(lnUid,.T.) if (loImapSrc.LastMethodSuccess = .F.) then ? loImapSrc.LastErrorText release loImapSrc release loImapDest release loFac release loMsetAlreadyCopied release loSbFlags return endif loSbFlags.SetString(lcFlags) // Get the MIME of this email from the source. lcMimeStr = loImapSrc.FetchSingleAsMime(lnUid,.T.) if (loImapSrc.LastMethodSuccess = .F.) then ? loImapSrc.LastErrorText release loImapSrc release loImapDest release loFac release loMsetAlreadyCopied release loSbFlags return endif llSeen = loSbFlags.Contains("\\Seen",.F.) llFlagged = loSbFlags.Contains("\\Flagged",.F.) llAnswered = loSbFlags.Contains("\\Answered",.F.) llDraft = loSbFlags.Contains("\\Draft",.F.) llSuccess = loImapDest.AppendMimeWithFlags("Inbox",lcMimeStr,llSeen,llFlagged,llAnswered,llDraft) if (llSuccess <> .T.) then ? loImapDest.LastErrorText release loImapSrc release loImapDest release loFac release loMsetAlreadyCopied release loSbFlags return endif // Update msetAlreadyCopied with the uid just copied. loMsetAlreadyCopied.InsertId(lnUid) // Save at every iteration just in case there's a failure.. lcStrMsgSet = loMsetAlreadyCopied.ToCompactString() loFac.WriteEntireTextFile("qa_cache/saAlreadyLoaded.txt",lcStrMsgSet,"utf-8",.F.) endif i = i + 1 enddo release loMset // Disconnect from the IMAP servers. llSuccess = loImapSrc.Disconnect() llSuccess = loImapDest.Disconnect() release loImapSrc release loImapDest release loFac release loMsetAlreadyCopied release loSbFlags |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.