2016-12-30 35 views
1

以下のコードは、imaplibを使用して電子メールを削除する方法についての私の理解です。それは削除の前に電子メールを「ゴミ箱」に移動することを含み、これはGmailを使用する際の要件です。imaplib(gmail)を使用した電子メールの削除

しかし、わかりますように、私はラベル変更段階に落ちているようです。私はスタック上に他の同様のトピックを見てきましたが、複数の提案されたソリューションを試してみましたが、私はこれを解決できませんでした。

>>> import imaplib 
>>> server = imaplib.IMAP4_SSL(GMAIL_IMAP) 
>>> server.login(EMAIL, PASSWORD) 
('OK', [b'[email protected] authenticated (Success)']) 
>>> server.select("INBOX") 
('OK', [b'17']) 
>>> status, uids = server.uid("search", None, "ALL") 
>>> uids 
[b'1 2 3 4 5 6 7 8 9 10 15 16 17 18 19 43 44'] 
uids = [uid for uid in uids[0].split()] 
>>> uids 
[b'1', b'2', b'3', b'4', b'5', b'6', b'7', b'8', b'9', b'10', b'15', b'16', b'17', b'18', b'19', b'43', b'44'] 
>>> server.store(uids[-1], "X-GM-LABELS", "\\Trash") 
('OK', [None]) 
>>> server.store(uids[-1], "+FLAGS", "\\Deleted") 
('OK', [None]) 
>>> server.expunge() 
('OK', [None]) 
>>> server.close() 
('OK', [b'Returned to authenticated state. (Success)']) 
>>> server.logout() 
('BYE', [b'LOGOUT Requested']) 

答えて

1

UIDとシーケンス番号を混在させています。

あなたはUID SEARCHを求めるので、UIDを取り戻してください。

server.uid("store", uids[-1], "X-GM-LABELS", "\\Trash") 

他のストアコマンドでも同様に使用する必要があります。 Gmailでのみ、この方法でゴミ箱に移動すると、\ DeletedとExpungeコマンドを気にする必要はありません。サーバーは自動的にそれを行う必要があります。

関連する問題