2013-06-28 2 views
5

인터넷에서 검색 할 때 imap을 사용하여 자동으로 표시 되더라도 메일을 SEEN으로 표시하는 방법에 대한 많은 예제가 있습니다.python imaplib - 읽지 않은 메일 또는 보이지 않는 메일로 확인

그러나 이메일을 UNSEEN 또는 UNREAD으로 표시하려면 어떻게해야합니까?

나는 파이썬에서 UNSEEN 개의 메시지를받는 스크립트를 가지고 있으며 훌륭하게 작동합니다. 하지만 그들을 읽은 후, imap은 자동으로 SEEN으로 표시합니다. 스크립트가 오류가없는 경우에만 예외가 발생하기 때문에 다시 전자 메일을 UNSEEN으로 표시해야하므로 다음에 스크립트에서 해당 메시지를 읽습니다. 다시.

어떻게해야합니까?

나는 또한 mail.select(mail_label,readonly=True)을 사용했지만 그걸로 나는 또한 메시지를 SEEN으로 표시 할 수 없으므로 도움이되지 않습니다. Gmail에서도이 기능을 사용하고 싶습니다.

tag UID STORE -FLAGS (\Seen) 

을하지만, 성공적으로 메시지를 처리 ​​한 후에는 처음에 \Seen 플래그를 설정하면 소프트웨어는 아마 더 robost 될 것입니다 :

답변

5

쉽게이 명령으로 \Seen 플래그를 지울 수 있습니다. 그렇게하면 IMAP 서버에 대한 연결이 끊어진 경우에도 메시지를 처리하는 중에 문제가 발생하면 플래그가 설정되지 않은 채로 남아 있으므로 다음에 스크립트를 실행할 때 해당 메시지를 다시 시도 할 수 있습니다. BODY 대신 BODY.PEEK을 사용하여 IMAP 서버의 \Seen 플래그 자동 설정을 방지하면됩니다.

파이썬에서 나는 이라고 생각하는데, STORE 명령은 이와 같이 발행되어야하지만 시도하지는 않았습니다.

(typ, [data]) = <instance>.store(message_set, command, flags) 

그래서, 다음 줄 당신이 읽을 수있는 메시지를 설정하게됩니다 ('+ FLAGS') 또는 UNREAD ('-Flags'파이썬에서

connection.uid('STORE', '-FLAGS', '(\Seen)') 
+0

, 내가 사용 : '.fetch (NUM,'(BODY.PEEK []) ')'. –

5

은은 imaplib 모듈로 STORE 설명) 필요에 따라.

connection.uid('STORE', MESSAGE_ID, '+FLAGS', '\SEEN') 

당신은 비밀이 FLAGS 명령에 참조로

, 픽,은 imaplib 사용)

관련 문제