gpt4 book ai didi

ios - 如何通过 Mailcore/Libetpan 设置电子邮件 IMAP SEEN 标志

转载 作者:行者123 更新时间:2023-11-29 03:58:16 24 4
gpt4 key购买 nike

我正在使用Mailcore iOS 电子邮件客户端的库。我想在有人查看电子邮件时将其标记为已查看(即将邮件设置 IMAP SEEN flag)。

这就是 Mailcore indicates 的方式一条消息已 read :

- (BOOL)isUnread {
struct mail_flags *flags = myMessage->msg_flags;
if (flags != NULL) {
BOOL flag_seen = (flags->fl_flags & MAIL_FLAG_SEEN);
return !flag_seen;
}
return NO;
}

这就是我将消息设置为已读的方法:

- (void)setIsRead {
struct mail_flags *flags = myMessage->msg_flags;
flags->fl_flags = (flags->fl_flags | MAIL_FLAG_SEEN);
}

(我确认它至少在同一个 session 中有效。即,如果我在未读消息上调用此消息,然后调用 [self isUnread] 它会返回 false)

我的问题是这不会影响实际的 IMAP 服务器。即,如果我在 Gmail 中查看同一封电子邮件,它将显示为未读。

也在 CTCoreMessage documentation 中:

CTCoreMessage is how you work with messages. The easiest way toinstantiate a CTCoreMessage is to first setup a CTCoreAccount objectand then get a CTCoreFolder object and then use it’s conveniencemethod messageWithUID: to get a message object you can work with.

我做了这两件事(可能值得一提的是,我一直保持 IMAP 连接处于事件状态..但当我没有主动同步或发送电子邮件等时,我会保留它 idle 。但在调用上面的 [self setIsRead] 之前,我向其发送 IMAP done command )。

那么还缺少什么呢?我的想法是,我只是更改已从 IMAP 服务器获取的消息的本地结构。但我不会使用新信息更新服务器。我怎么做?在 Mailcore 中,与服务器交互的唯一方法是通过 +sendMessage:server:username:password:port:connectionType:useAuth:error:但这与发送电子邮件相同......这绝对不是我想要的。

想法?

更新:基本上我只是希望能够发出 store IMAP command像这样(我已经确认它适用于 Telnet command line ):

tag store %message_number% flags \Seen
* %message_number% FETCH (FLAGS (\Seen))
tag OK Success

最佳答案

这里是 MailCore 的作者。

我建议在 CTCoreFolder 上使用方法 setFlags:forMessage,如下所述: http://libmailcore.com/api/Classes/CTCoreFolder.html#//api/name/setFlags:forMessage :

上面的内容将覆盖任何现有的标志。相反,使用flagsForMessage:flags获取当前标志,然后使用按位运算符更改您想要的标志。然后在服务器上设置标志

关于ios - 如何通过 Mailcore/Libetpan 设置电子邮件 IMAP SEEN 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16208781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com