You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MailCore 2 provides a simple and asynchronous Objective-C API to work with the e-mail protocols IMAP, POP and SMTP. The API has been redesigned from the ground up. It features:
Using MailCore 2 is just a little more complex conceptually than the original MailCore. All fetch requests in MailCore 2 are made asynchronously through a queue. What does this mean? Well, let's take a look at a simple example:
letsession=MCOIMAPSession()
session.hostname ="imap.gmail.com"
session.port =993
session.username ="ADDRESS@gmail.com"
session.password ="123456"
session.connectionType =.TLS
letfolder="INBOX"letuids=MCOIndexSet(range:MCORange(location:1, length:UInt64.max))iflet fetchOperation = session.fetchMessagesOperation(withFolder: folder, requestKind:.headers, uids: uids){
fetchOperation.start{ error, fetchedMessages, vanishedMessages in
// We've finished downloading the messages!
// Let's check if there was an error
iflet error = error {print("Error downloading message headers: \(error.localizedDescription)")}
// And, let's print out the messages:
print("The post man delivereth: \(fetchedMessages.debugDescription)")}}
In this sample, we retrieved and printed a list of email headers from an IMAP server. In order to execute the fetch, we request an asynchronous operation object from the MCOIMAPSession instance with our parameters (more on this later). This operation object is able to initiate a connection to Gmail when we call the start method. Now here's where things get a little tricky. We call the start function with a block, which is executed on the main thread when the fetch operation completes. The actual fetching from IMAP is done on a background thread, leaving your UI and other processing free to use the main thread.