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
(Perl) Copy Email from one IMAP Account to AnotherDemonstrates how to copy the email in a mailbox from one account to another.
use chilkat(); $imapSrc = chilkat::CkImap->new(); # This example assumes Chilkat Imap to have been previously unlocked. # See Unlock Imap for sample code. # Connect to our source IMAP server. $imapSrc->put_Ssl(1); $imapSrc->put_Port(993); $success = $imapSrc->Connect("MY-IMAP-DOMAIN"); if ($success != 1) { print $imapSrc->lastErrorText() . "\r\n"; exit; } # Login to the source IMAP server $success = $imapSrc->Login("MY-IMAP-LOGIN","MY-IMAP-PASSWORD"); if ($success != 1) { print $imapSrc->lastErrorText() . "\r\n"; exit; } $imapDest = chilkat::CkImap->new(); # Connect to our destination IMAP server. $imapDest->put_Ssl(1); $imapDest->put_Port(993); $success = $imapDest->Connect("MY-IMAP-DOMAIN2"); if ($success != 1) { print $imapDest->lastErrorText() . "\r\n"; exit; } # Login to the destination IMAP server $success = $imapDest->Login("MY-IMAP-LOGIN2","MY-IMAP-PASSWORD2"); if ($success != 1) { print $imapDest->lastErrorText() . "\r\n"; exit; } # Select a source IMAP mailbox on the source IMAP server $success = $imapSrc->SelectMailbox("Inbox"); if ($success != 1) { print $imapSrc->lastErrorText() . "\r\n"; exit; } $fetchUids = 1; # Get the set of UIDs for all emails on the source server. # mset is a MessageSet $mset = $imapSrc->Search("ALL",$fetchUids); if ($imapSrc->get_LastMethodSuccess() != 1) { print $imapSrc->lastErrorText() . "\r\n"; exit; } # Load the complete set of UIDs that were previously copied. # We dont' want to copy any of these to the destination. $fac = chilkat::CkFileAccess->new(); $msetAlreadyCopied = chilkat::CkMessageSet->new(); $strMsgSet = $fac->readEntireTextFile("qa_cache/saAlreadyLoaded.txt","utf-8"); if ($fac->get_LastMethodSuccess() == 1) { $msetAlreadyCopied->FromCompactString($strMsgSet); } $numUids = $mset->get_Count(); $sbFlags = chilkat::CkStringBuilder->new(); $i = 0; while ($i < $numUids) { # If this UID was not already copied... $uid = $mset->GetId($i); if (!$msetAlreadyCopied->ContainsId($uid)) { print "copying " . $uid . "..." . "\r\n"; # Get the flags. $flags = $imapSrc->fetchFlags($uid,1); if ($imapSrc->get_LastMethodSuccess() == 0) { print $imapSrc->lastErrorText() . "\r\n"; exit; } $sbFlags->SetString($flags); # Get the MIME of this email from the source. $mimeStr = $imapSrc->fetchSingleAsMime($uid,1); if ($imapSrc->get_LastMethodSuccess() == 0) { print $imapSrc->lastErrorText() . "\r\n"; exit; } $seen = $sbFlags->Contains("\\Seen",0); $flagged = $sbFlags->Contains("\\Flagged",0); $answered = $sbFlags->Contains("\\Answered",0); $draft = $sbFlags->Contains("\\Draft",0); $success = $imapDest->AppendMimeWithFlags("Inbox",$mimeStr,$seen,$flagged,$answered,$draft); if ($success != 1) { print $imapDest->lastErrorText() . "\r\n"; 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",0); } $i = $i + 1; } # Disconnect from the IMAP servers. $success = $imapSrc->Disconnect(); $success = $imapDest->Disconnect(); |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.