iOS 이메일 클라이언트에 Mailcore 라이브러리를 사용하고 있습니다. 다른 사람이 볼 때마다 본 이메일을 표시 (예 : IMAP SEEN flag을 메시지에 설정)하고 싶습니다. 이메일 설정 방법 Mailcore/Libetpan을 통한 IMAP SEK 플래그
- (void)setIsRead {
struct mail_flags *flags = myMessage->msg_flags;
flags->fl_flags = (flags->fl_flags | MAIL_FLAG_SEEN);
}
(나는 그것이 적어도 작동하는지 확인 :
- (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;
}
이 읽으면서 내가 메시지를 설정 한 것입니다 :
이 메시지가 read를하고있다 Mailcore indicates 방법입니다 즉, 읽지 않은 메시지에서이 메시지를 호출하면 [self isUnread]
을 호출하면 false
을 반환합니다.
제 문제는 이것이 실제 IMAP 서버에 영향을 미치지 않는다는 것입니다. 즉 내 Gmail에서 동일한 이메일을 볼 경우 아직 읽지 않은 상태로 표시됩니다. CTCoreMessage documentation에서 또한
: 당신이 메시지와 함께 작동하는 방법
CTCoreMessage이다. CTCoreMessage를 인스턴스화하는 가장 쉬운 방법은 먼저 CTCoreAccount 개체를 으로 설정 한 다음 CTCoreFolder 개체를 가져온 다음 메서드 messageWithUID :를 사용하여 작업 할 수있는 메시지 개체를 가져 오는 것입니다.
내가 언급 할 가치가있을 수 있습니다 일에 대한 것들 (모두 내가 살아있는 모든 시간을 내 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
나는 .. 거기에 고양이가 하나 이상의 방법이있을 수 있습니다 .. 어쨌든 내가 [해결] (http://stackoverflow.com/a/16216282/766570) 내 문제 – abbood