IMAP : 한 폴더에서 다른 폴더로 메시지를 이동하는 방법

StackOverflow https://stackoverflow.com/questions/122267

  •  02-07-2019
  •  | 
  •  

문제

(다른 메일 패키지의 도움이 아닌 IMAP 명령 사용)

도움이 되었습니까?

해결책

IMAP Speak에 얼마나 잘 정통한 지 잘 모르겠지만 기본적으로 로그인 한 후 "소스 사서함"을 선택하고 메시지를 복사하고 메시지를 "삭제"합니다 (또는 이전 사서함을 "삭제"하십시오. 지금 비어 있습니다 :-).

a login a s
b select source
c copy 1 othermbox
d store 1 +flags (\Deleted)
e expunge

보낼 메시지의 예입니다. (메모: IMAP 메시지는 각 명령 전에 Uniqe 접두사가 필요하므로 앞에 "ABC"가 필요합니다.

보다 RFC 2060 자세한 내용은.

다른 팁

그렇게하는 방법에는 여러 가지가 있습니다. 가장 좋은 것은입니다 UID MOVE 명령이 정의되었습니다 RFC 6851 2013 년 초 :

C: a UID MOVE 42:69 foo
S: * OK [COPYUID 432432 42:69 1202:1229]
S: * 22 EXPUNGE
S: (more expunges)
S: a OK Done

이 확장의 존재는 다음으로 표시됩니다 MOVE 능력.

사용할 수 없다면 UIDPLUS (RFC 4315), 두 번째로 가장 좋은 옵션은 UID STORE, UID COPY 그리고 UID EXPUNGE:

C: a01 UID COPY 42:69 foo
S: a01 OK [COPYUID 432432 42:69 1202:1229] Copied
C: a02 UID STORE 42:69 +FLAGS.SILENT (\Deleted)
S: a02 OK Stored
C: a03 UID EXPUNGE 42:69
S: * 10 EXPUNGE
S: * 10 EXPUNGE
S: * 10 EXPUNGE
S: a03 Expunged

만약 UIDPLUS 누락되었습니다. 합리적인 일이 없습니다. EXPUNGE 명령은 삭제되지 않은 모든 메시지를 포함하여 삭제에 표시된 모든 메시지를 영구적으로 제거합니다. 가장 좋은 것은 그냥 사용하는 것입니다 UID COPY 그리고 UID STORE 이 경우.

이동할 이메일의 UID가있는 경우.

import imaplib

obj = imaplib.IMAP4_SSL('imap.gmail.com', 993)
obj.login('username', 'password')
obj.select(src_folder_name)
apply_lbl_msg = obj.uid('COPY', msg_uid, desti_folder_name)
if apply_lbl_msg[0] == 'OK':
    mov, data = obj.uid('STORE', msg_uid , '+FLAGS', '(\Deleted)')
    obj.expunge()

어디에 msg_uid 메일의 UID입니다.

메시지를 새 폴더에 복사 한 다음 이전 폴더에서 메시지를 삭제 (삭제)합니다.

RFC3501

힌트 당신이 의미하는 바를 수행하는 삭제 명령은 없으며, 메시지를 삭제 한 것으로 표시 한 다음 사서함을 삭제해야합니다. RFC를 살펴보십시오. 단일 메일이 아닌 전체 사서함을 삭제하므로 삭제에주의하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top