MailCore 2 提供了一个简单且异步的 Objective-C API,用于处理电子邮件协议 IMAP、POP 和 SMTP。该 API 从底层进行了重新设计,其特点包括:
阅读 iOS/OSX 构建说明。
阅读 Android 构建说明。
阅读 Windows 构建说明。
阅读 Linux 构建说明。
从概念上讲,使用 MailCore 2 比原始 MailCore 稍微复杂一些。MailCore 2 中的所有获取请求都是通过队列异步进行的。这意味着什么呢?让我们看一个简单的例子
let session = MCOIMAPSession()
session.hostname = "imap.gmail.com"
session.port = 993
session.username = "ADDRESS@gmail.com"
session.password = "123456"
session.connectionType = .TLS
let folder = "INBOX"
let uids = MCOIndexSet(range: MCORange(location: 1, length: UInt64.max))
if let 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
if let error = error {
print("Error downloading message headers: \(error.localizedDescription)")
}
// And, let's print out the messages:
print("The post man delivereth: \(fetchedMessages.debugDescription)")
}
}
(您也可以阅读 Objective-C 版本)
在这个示例中,我们从 IMAP 服务器检索并打印了电子邮件标头列表。为了执行获取操作,我们使用我们的参数(稍后会详细介绍)从 MCOIMAPSession
实例请求一个异步操作对象。当我们调用 start
方法时,此操作对象能够发起与 Gmail 的连接。现在,事情变得有点棘手了。我们使用一个代码块调用 start
函数,该代码块在获取操作完成时在主线程上执行。从 IMAP 实际获取操作是在后台线程中完成的,这使得您的 UI 和其他处理可以自由使用主线程。
MailCore 2 基于 BSD 许可。