def __init__(self, host, port=None, ssl=True, use_uid=True, stream=False, silent_fail=False): # pylint: disable=R0913 """ Initialisation and setup connection to IMAPClient. Arguments: host (str): address of host port (int): port to connect to ssl (boolean): True if ssl should be used use_uid (boolean): If True unique message UIDs be used for all calls that accept message ids (defaults to True). stream (boolean): If True then *host* is used as the command to run to establish a connection to the IMAP server (defaults to False). This is useful for exotic connection or authentication setups. Raises: IMAPConnectionError: raised when connection cannot be established. """ try: self.client = IMAPClient(host, port, use_uid, ssl, stream) self.client.normalise_times = False except (error, gaierror) as e: # Could not connect to IMAPClient. self.client = None logger.warn(e) if not silent_fail: raise IMAPConnectionError(str(e))
def _login(self): try: self.logger.debug("尝试登录邮箱") self.client = IMAPClient(HOST, PORT) loginInfo = self.client.login(self.USERNAME, self.PASSWORD) self.logger.debug("loginInfo: {0}".format(loginInfo)) self.logger.debug("邮箱登录成功") self.isLogin = True except Exception as e: self.isLogin = False self.logger.error("邮箱登录失败: " + str(e))
def test_SSL(self): self.imaplib.IMAP4_SSL.return_value = sentinel.IMAP4_SSL imap = IMAPClient('1.2.3.4', ssl=True) self.assertEqual(imap._imap, sentinel.IMAP4_SSL) self.imaplib.IMAP4_SSL.assert_called_with('1.2.3.4', 993) self.assertEqual(imap.host, '1.2.3.4') self.assertEqual(imap.port, 993) self.assertEqual(imap.ssl, True) self.assertEqual(imap.stream, False)
def test_plain(self): self.imaplib.IMAP4.return_value = sentinel.IMAP4 imap = IMAPClient('1.2.3.4') self.assertEqual(imap._imap, sentinel.IMAP4) self.imaplib.IMAP4.assert_called_with('1.2.3.4', 143) self.assertEqual(imap.host, '1.2.3.4') self.assertEqual(imap.port, 143) self.assertEqual(imap.ssl, False) self.assertEqual(imap.stream, False)
def test_stream(self): self.imaplib.IMAP4_stream.return_value = sentinel.IMAP4_stream imap = IMAPClient('command', stream=True) self.assertEqual(imap._imap, sentinel.IMAP4_stream) self.imaplib.IMAP4_stream.assert_called_with('command') self.assertEqual(imap.host, 'command') self.assertEqual(imap.port, None) self.assertEqual(imap.ssl, False) self.assertEqual(imap.stream, True)
def test_SSL_kwargs(self): self.imaplib.IMAP4_SSL.return_value = sentinel.IMAP4_SSL imap = IMAPClient('1.2.3.4', ssl=True, keyfile='key.pem', certfile='cert.pem') self.assertEqual(imap._imap, sentinel.IMAP4_SSL) self.imaplib.IMAP4_SSL.assert_called_with('1.2.3.4', 993, keyfile='key.pem', certfile='cert.pem') self.assertEqual(imap.ssl, True) self.assertEqual(imap.stream, False) imap = IMAPClient('1.2.3.4', ssl=True, ssl_context=sentinel.context) self.imaplib.IMAP4_SSL.assert_called_with('1.2.3.4', 993, ssl_context=sentinel.context) self.assertEqual(imap.ssl, True) self.assertEqual(imap.stream, False)
def test_plain(self): fakeIMAP4 = Mock() self.imap4.IMAP4WithTimeout.return_value = fakeIMAP4 imap = IMAPClient('1.2.3.4', ssl=False, timeout=sentinel.timeout) self.assertEqual(imap._imap, fakeIMAP4) self.imap4.IMAP4WithTimeout.assert_called_with( '1.2.3.4', 143, SocketTimeout(sentinel.timeout, sentinel.timeout)) self.assertEqual(imap.host, '1.2.3.4') self.assertEqual(imap.port, 143) self.assertEqual(imap.ssl, False) self.assertEqual(imap.ssl_context, None) self.assertEqual(imap.stream, False)
def test_SSL(self): fakeIMAP4_TLS = Mock() self.tls.IMAP4_TLS.return_value = fakeIMAP4_TLS imap = IMAPClient('1.2.3.4', ssl=True, ssl_context=sentinel.context, timeout=sentinel.timeout) self.assertEqual(imap._imap, fakeIMAP4_TLS) self.tls.IMAP4_TLS.assert_called_with( '1.2.3.4', 993, sentinel.context, sentinel.timeout) self.assertEqual(imap.host, '1.2.3.4') self.assertEqual(imap.port, 993) self.assertEqual(imap.ssl, True) self.assertEqual(imap.ssl_context, sentinel.context) self.assertEqual(imap.stream, False)
level=logging.INFO, datefmt="%Y-%m-%d %H:%M:%S") request_raw = sys.stdin.readline() request = json.loads(request_raw.rstrip()) logging.info( {key: request[key] for key in request if key not in ["imap-passwd"]}) host = request["imap-host"] port = request["imap-port"] login = request["imap-login"] passwd = request["imap-passwd"] idle_timeout = request["idle-timeout"] imap = IMAPClient(host, port) imap.login(login, passwd) imap.select_folder("INBOX") imap.idle() def notify_new_mail(): title = "Iris" msg = "New mail available!" if sys.platform == "darwin": cmd = ["terminal-notifier", "-title", title, "-message", msg] else: cmd = ["notify-send", title, msg] logging.info("Notify: " + " ".join(cmd))
for address in bulb_address_list: logger.info(colors) bulb = flux_led.WifiLedBulb(address) bulb.setRgb(colors, True, None) else: for address in bulb_address_list: logger.info(colors) bulb = flux_led.WifiLedBulb(address) bulb.setCustomPattern(colors, 100, "jump") bulb_addresses = bulb_scan() logger.info(bulb_addresses) open_config() server = IMAPClient(host) server.login(user, password) server.select_folder('INBOX') server.idle() while True: try: response = server.idle_check(timeout=15) if response: server.idle_done() text = pull_email() if text is not None: units = find_units(text[3]) set_pattern(units, bulb_addresses) except Exception as e: logging.error(str(e))
for key in request if key not in ["imap-passwd", "smtp-passwd"] })) if request["type"] == "login": try: imap_host = request["imap-host"] imap_port = request["imap-port"] imap_login = request["imap-login"] imap_passwd = request["imap-passwd"] smtp_host = request["smtp-host"] smtp_port = request["smtp-port"] smtp_login = request["smtp-login"] smtp_passwd = request["smtp-passwd"] imap_client = IMAPClient(host=imap_host, port=imap_port) imap_client.login(imap_login, imap_passwd) PreventLogout() folders = list( map(lambda folder: folder[2], imap_client.list_folders())) response = dict(success=True, type="login", folders=folders) except Exception as error: response = dict(success=False, type="login", error=str(error)) elif request["type"] == "fetch-emails": try: emails = get_emails(request["seq"], request["chunk-size"]) response = dict(success=True, type="fetch-emails", emails=emails) except Exception as error: response = dict(success=False,
except: continue if request['type'] == 'login': try: _imap_host = request['imap-host'] _imap_port = request['imap-port'] _imap_user = request['imap-user'] _imap_pass = request['imap-pass'] _smtp_host = request['smtp-host'] _smtp_port = request['smtp-port'] _smtp_user = request['smtp-user'] _smtp_pass = request['smtp-pass'] _imap = IMAPClient(host=_imap_host, port=_imap_port) _imap.login(_imap_user, _imap_pass) folders = list(map(lambda folder: folder[2], _imap.list_folders())) response = dict(success=True, type='login', folders=folders) except Exception as error: response = dict(success=False, type='login', error=str(error)) elif request['type'] == 'fetch-emails': try: emails = get_emails(request['seq']) response = dict(success=True, type='fetch-emails', emails=emails) except Exception as error: response = dict(success=False, type='fetch-emails',