私はGmail用のPop3クライアントを書いています。問題は、電子メールがダウンロードされると、pop3サーバーから削除されることです。RSETコマンドをサーバーに送信しようとしましたが、機能しません。
切断する直前または各メールをダウンロードした後にRSETを送信する必要がありますか?
DELE コマンドを送信/使用した場合にのみ、メッセージを削除する必要があります。あなたは自分で書いているので..単にDELEコマンドを使用しないでください:http://www.faqs.org/rfcs/rfc1939.html
RSET コマンドも機能するはずです。リンクされている RFC から参照してください。
RSET
Arguments: none
Restrictions:
may only be given in the TRANSACTION state
Discussion:
If any messages have been marked as deleted by the POP3
server, they are unmarked. The POP3 server then replies
with a positive response.
Possible Responses:
+OK
Examples:
C: RSET
S: +OK maildrop has 2 messages (320 octets)
Gmail の POP3 構成は、混乱する場合があります。Gmail のウェブ インターフェースの [設定] の [転送と POP/IMAP] タブで、[メッセージが POP でアクセスされるとき] というドロップダウン リストを見つけることができます。
値のリストとGmail の動作は次のとおりです。
を。 「Gmail のコピーを削除」 : RETR コマンドを発行してメッセージを削除します。
b. 「Gmail のコピーを受信トレイに保持する」 : メッセージは受信トレイに残ります。Web インターフェイスでは未読と表示されますが、POP3 クライアントを使用して 2 回目にメッセージを受信することはありません。
c. "archive Gmail's copy ": メッセージは RETR コマンドを発行すると削除されますが、Web インターフェイスを使用して検索することは可能です。
Gmail は単純に DELE コマンドを無視し、POP3 標準には従いません。
Gmail の POP3 サーバーは通常の POP3 サーバーのようには機能しないため、POP3 DELE コマンドでメールを削除していなくても、古いメールを自動的に非表示にします。
Gmail メールボックスからすべてのメールを読みたい場合は、IMAP4 クライアントの実装または検索を試みることができます。IMAP4 を使用して、Gmail メールボックス内のすべてのメールを読むことができます。
Google は従来の意味で POP3 を扱いません。メールをダウンロードすると、ダウンロード済みとしてフラグが付けられ、POP3 は削除されたように動作します。しかし実際には、サーバー上にメールのコピーを保持しています。
しばらく経ちましたが、同様の問題に取り組んでいると、TOPコマンドがGMail POP3サーバー内でメッセージを既読としてマークしないことがわかりました。
そのため、メッセージを完全に読まなくても、後で読み返すことができます。
それが役に立てば幸い。