2016-10-27 20 views
0

私は私の電子メールからmessegeを削除するには、このコードを使用してmessegeを削除することはできません:はimaplib

mail.store(id, '+FLAGS', '\\Deleted') 
mail.expunge() 

そして、このコードは、「OK」を返すです。

( 'OK'、[なし])

また、私はあることを私のGmailのACOUNTに設定を変更:

Settings of my imap using with gmail

しかし、私はまだmessegesを削除傾けます。それはなぜです?

答えて

1

「メッセージシーケンス番号」(MSN、あなたは「偽のids」と呼んでいます)と「ユニークids」(あなたは「実際のids」と呼んでいます)を混在させています。

どこでもUIDを使用する方が便利です。 MSNとUIDの両方のバージョンには、FETCHとUID FETCH、SEARCHとUID SEARCH、STOREとUID STOREの2つのコマンドがあります。あなたは一貫していなければなりませんが、そうでなければ同じように動作します。具体的には、Gmailの上の削除について

email.uid('STORE', id, '+FLAGS', '(\\Deleted)') 
email.expunge() 

:あなたはUIDの検索を使用する場合

だから、あなたは、UIDストアを使用する必要があります削除についてユーザ設定にもかかわらず、私はそれは常にちょうど「受信トレイ」を削除発見しましたラベル(またはあなたが入っているフォルダ)に保存されます。これにより、すべてのメールフォルダまたはそれに相当するフォルダにアーカイブが残されます。ユーザーのごみ箱フォルダへ

  • 移動それは((UID) MOVE、または(UID) COPYと削除の組み合わせを使用して、その後
  • をユーザーのごみ箱フォルダから削除:本当にそれを削除するには、する必要があるかもしれません。ほとんどのユーザーは、自動的に30日後に削除されるまでゴミ箱に放置しても問題ありません。
+0

ありがとうございます。知っておいて良かった:) –

0

私は自分の問題を解決しましたが、誰かがこの答えに別の答えを返すとうれしいことをもう一つ得ました:) 私はmessegeのidを検索すると、 (例えば、500メッセージがあり、それらのすべてを削除した場合、次のメッセージは501になります。受信トレイにメッセージが1つだけあっても)。だからではなく、使用しての :

email.uids('search', 'ALL') 

は、私が使用:

email.search(None, 'ALL') 

私はmessegeを削除したとき、私は本物ではないIDを使用する必要がありました。例えば、501 messegeは "偽のID"(またはそれを見たいと思う方法を見てください)で1になり、次のものは2などになります。

501 messege idを削除するには、私は1 messege idのためにそれをしました。

しかし、質問が出てくる: なぜmessegesを取って(そして、私は '本当のid'を使用する必要があります)、それらを削除する間に違いがあります(そして、私は '本当のID'を使用する必要があります)。 )

+0

回答を参照してください。 – Max

関連する問題