1# Copyright (c) 2015, Menno Smits 2# Released subject to the New BSD License 3# Please see http://en.wikipedia.org/wiki/BSD_licenses 4 5import imaplib 6import socket 7 8 9class IMAP4WithTimeout(imaplib.IMAP4): 10 def __init__(self, address, port, timeout): 11 self._timeout = timeout 12 imaplib.IMAP4.__init__(self, address, port) 13 14 def open(self, host="", port=143, timeout=None): 15 # This is overridden to make it consistent across Python versions. 16 self.host = host 17 self.port = port 18 self.sock = self._create_socket(timeout) 19 self.file = self.sock.makefile("rb") 20 21 def _create_socket(self, timeout=None): 22 return socket.create_connection( 23 (self.host, self.port), timeout if timeout is not None else self._timeout 24 ) 25