PowerShell
PowerShell
How to Copy IMAP Mail to another IMAP Server
Demonstrates how to copy the entire contents of an IMAP mailbox to another IMAP server.Chilkat PowerShell Downloads
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"
$success = $false
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
$imapSrc = New-Object Chilkat.Imap
# Connect to our source IMAP server.
$success = $imapSrc.Connect("imap.example.com")
if ($success -eq $false) {
$($imapSrc.LastErrorText)
exit
}
# Login to the source IMAP server
$success = $imapSrc.Login("admin@chilkatsoft.com","myPassword")
if ($success -eq $false) {
$($imapSrc.LastErrorText)
exit
}
$imapDest = New-Object Chilkat.Imap
# Connect to our destination IMAP server.
$success = $imapDest.Connect("mail.example-code.com")
if ($success -eq $false) {
$($imapDest.LastErrorText)
exit
}
# Login to the destination IMAP server
$success = $imapDest.Login("myLogin","myPassword")
if ($success -eq $false) {
$($imapDest.LastErrorText)
exit
}
# Select an IMAP mailbox on the source IMAP server
$success = $imapSrc.SelectMailbox("Inbox")
if ($success -eq $false) {
$($imapSrc.LastErrorText)
exit
}
# After selecting a mailbox, the NumMessages property will
# be updated to reflect the total number of emails in the mailbox:
$($imapSrc.NumMessages)
# The emails in the mailbox will always have sequence numbers
# ranging from 1 to NumMessages.
# This example will copy the first 10 messages using sequence numbers
$sbMime = New-Object Chilkat.StringBuilder
for ($seqNum = 1; $seqNum -le 10; $seqNum++) {
$sbMime.Clear()
$success = $imapSrc.FetchSingleAsMimeSb($seqNum,$false,$sbMime)
if ($success -eq $false) {
$($imapSrc.LastErrorText)
exit
}
$success = $imapDest.AppendMimeWithFlagsSb("Inbox",$sbMime,$false,$false,$false,$false)
if ($success -eq $false) {
$($imapDest.LastErrorText)
exit
}
}
# Disconnect from the IMAP servers.
$success = $imapSrc.Disconnect()
$success = $imapDest.Disconnect()