Swift
Swift
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 Swift Downloads
func chilkatTest() {
var success: Bool = false
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
let imapSrc = CkoImap()!
// Connect to our source IMAP server.
success = imapSrc.connect(hostname: "imap.example.com")
if success == false {
print("\(imapSrc.lastErrorText!)")
return
}
// Login to the source IMAP server
success = imapSrc.login(login: "admin@chilkatsoft.com", password: "myPassword")
if success == false {
print("\(imapSrc.lastErrorText!)")
return
}
let imapDest = CkoImap()!
// Connect to our destination IMAP server.
success = imapDest.connect(hostname: "mail.example-code.com")
if success == false {
print("\(imapDest.lastErrorText!)")
return
}
// Login to the destination IMAP server
success = imapDest.login(login: "myLogin", password: "myPassword")
if success == false {
print("\(imapDest.lastErrorText!)")
return
}
// Select an IMAP mailbox on the source IMAP server
success = imapSrc.selectMailbox(mailbox: "Inbox")
if success == false {
print("\(imapSrc.lastErrorText!)")
return
}
// After selecting a mailbox, the NumMessages property will
// be updated to reflect the total number of emails in the mailbox:
print("\(imapSrc.numMessages.intValue)")
// 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
let sbMime = CkoStringBuilder()!
var seqNum: Int
for seqNum = 1; seqNum <= 10; seqNum++ {
sbMime.clear()
success = imapSrc.fetchSingle(asMimeSb: seqNum, bUid: false, sbMime: sbMime)
if success == false {
print("\(imapSrc.lastErrorText!)")
return
}
success = imapDest.appendMime(withFlagsSb: "Inbox", sbMime: sbMime, seen: false, flagged: false, answered: false, draft: false)
if success == false {
print("\(imapDest.lastErrorText!)")
return
}
}
// Disconnect from the IMAP servers.
success = imapSrc.disconnect()
success = imapDest.disconnect()
}