阅读带有标志的电子邮件 headers - Mailcore & swift
Read email headers with flags - Mailcore & swift
我正在使用 mailCore 从服务器获取电子邮件。我已完成 session 设置和基本流程。现在我陷入了一个小问题,我无法弄清楚。
Here is code of fetching email headers
let folder: String = "Inbox"
let folderInfoFetch : MCOIMAPFolderInfoOperation = imapSession.folderInfoOperation(folder)
folderInfoFetch.start { (error, folderInfo) in
if (error == nil) {
var numberOfMessages : Int32 = Int32(30)
numberOfMessages -= 1
let request: MCOIMAPMessagesRequestKind = .headers
let messagesNumbers = MCOIndexSet.init(range: MCORange.init(location: UInt64(abs((folderInfo?.messageCount)!-numberOfMessages)) , length: UInt64(numberOfMessages)))
let fetch : MCOIMAPFetchMessagesOperation = self.imapSession.fetchMessagesByNumberOperation(withFolder: folder, requestKind: request, numbers: messagesNumbers)
fetch.start({ (error, fetchedMessages, vanishedMessages) in
if(error != nil)
{
print("Error downloading message headers: \(String(describing: error))")
} else {
if let mails = fetchedMessages as? [MCOIMAPMessage] {
print(mails)
}
}
})
}
此代码已成功返回邮件 headers。但是这里缺少 read/unread 标志。我已经看到这个问题的许多解决方案,但它们都在 objective c 中。
i-e
MCOIMAPMessagesRequestKind requestKind = MCOIMAPMessagesRequestKindHeaders | MCOIMAPMessagesRequestKindFlags
它的解决方案是在请求中发送多种类型的标志。但是我如何在 swift 中实现这一点?任何帮助将不胜感激!
所以在我的头撞了之后,唯一对我有用的解决方案是通过合并来附加标志。
let kind = MCOIMAPMessagesRequestKind()
let headers = kind.union(MCOIMAPMessagesRequestKind.headers)
let request = headers.union(MCOIMAPMessagesRequestKind.flags)
我知道这不是最好的,但它对我有用。
在 swift4.2 中,我使用以下语法实现了这一点:
let requestKind: MCOIMAPMessagesRequestKind = [.headers, .flags]
我正在使用 mailCore 从服务器获取电子邮件。我已完成 session 设置和基本流程。现在我陷入了一个小问题,我无法弄清楚。
Here is code of fetching email headers
let folder: String = "Inbox"
let folderInfoFetch : MCOIMAPFolderInfoOperation = imapSession.folderInfoOperation(folder)
folderInfoFetch.start { (error, folderInfo) in
if (error == nil) {
var numberOfMessages : Int32 = Int32(30)
numberOfMessages -= 1
let request: MCOIMAPMessagesRequestKind = .headers
let messagesNumbers = MCOIndexSet.init(range: MCORange.init(location: UInt64(abs((folderInfo?.messageCount)!-numberOfMessages)) , length: UInt64(numberOfMessages)))
let fetch : MCOIMAPFetchMessagesOperation = self.imapSession.fetchMessagesByNumberOperation(withFolder: folder, requestKind: request, numbers: messagesNumbers)
fetch.start({ (error, fetchedMessages, vanishedMessages) in
if(error != nil)
{
print("Error downloading message headers: \(String(describing: error))")
} else {
if let mails = fetchedMessages as? [MCOIMAPMessage] {
print(mails)
}
}
})
}
此代码已成功返回邮件 headers。但是这里缺少 read/unread 标志。我已经看到这个问题的许多解决方案,但它们都在 objective c 中。
i-e
MCOIMAPMessagesRequestKind requestKind = MCOIMAPMessagesRequestKindHeaders | MCOIMAPMessagesRequestKindFlags
它的解决方案是在请求中发送多种类型的标志。但是我如何在 swift 中实现这一点?任何帮助将不胜感激!
所以在我的头撞了之后,唯一对我有用的解决方案是通过合并来附加标志。
let kind = MCOIMAPMessagesRequestKind()
let headers = kind.union(MCOIMAPMessagesRequestKind.headers)
let request = headers.union(MCOIMAPMessagesRequestKind.flags)
我知道这不是最好的,但它对我有用。
在 swift4.2 中,我使用以下语法实现了这一点:
let requestKind: MCOIMAPMessagesRequestKind = [.headers, .flags]