2016-11-19 11 views
0

私は、pop3.quit()が電子メールを「読み込み」や「削除」などとマークしていることに気付きました(つまり、電子メールを読み込んで、ファイルの最後にpop3.quit()を実行するスクリプトが1つあります)これにより、そのセッション中に読み込まれた電子メールが再び読み込まれるのを防ぐことができます)。pop3.quit()vs pop3.close()は正しく文書化されていませんが、違いは何ですか?

私はまた、pop3.close()を実行するスクリプトを持っています。何らかの理由で、スクリプトの後に再度電子メールを読むことができます終了しました。

これらの相違点はどこに記載されていますか? 3.5のドキュメントでは、pop3.close()もドキュメント化されていません...

私は現在スクラブだからスクリプトをIMAPに移植していますが、当面は誰でも詳細な説明を提供できます終了と終了の違い?

答えて

0

唯一の違いはquitQUITコマンドを電子メールサーバーに送信することです。

ソースhereで確認できます。ソースを見ると

0

https://hg.python.org/cpython/file/tip/Lib/poplib.py#l272

def quit(self): 
    """Signoff: commit changes on server, unlock mailbox, close connection.""" 
    resp = self._shortcmd('QUIT') 
    self.close() 
    return resp 

def close(self): 
    """Close the connection without assuming anything about it.""" 
    try: 
     file = self.file 
     self.file = None 
     if file is not None: 
      file.close() 
    finally: 
     sock = self.sock 
     self.sock = None 
     if sock is not None: 
      try: 
       sock.shutdown(socket.SHUT_RDWR) 
      except OSError as e: 
       # The server might already have closed the connection 
       if e.errno != errno.ENOTCONN: 
        raise 
      finally: 
       sock.close() 

だから、RFCに記述されてQUITコマンドを送信します。https://www.ietf.org/rfc/rfc1939.txt

クライアントがTRANSACTION状態からQUITコマンドを発行すると、 POP3セッションはUPDATE状態になります。

POP3サーバは、削除されたとマークされたすべてのメッセージをmaildropから削除し、この 操作のステータスを返信します。メッセージを削除中にリソース が不足しているなどのエラーが発生した場合、 maildropは、削除済みとしてマークされたメッセージの一部またはすべてを削除する可能性があります。いかなる場合でも、サーバ は、削除済みとしてマークされていないメッセージを削除することはできません。

関連する問題