From cbba38aaeb077aae26f98c1b52813be667ae56fb Mon Sep 17 00:00:00 2001 From: Paulo Scardine Date: Sat, 1 Jun 2013 18:15:37 -0300 Subject: [PATCH] Suggestions for #4 (returning None) and #2 (logging server responses) * removed unused "import socket" * changed broad "except" clause to more specific "except ImportError" * general PEP8 reformat * added "debug" option for logging server responses/errors * return None instead of True/False on several errors that may be temporary --- validate_email.py | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/validate_email.py b/validate_email.py index d44c63b..ebff013 100644 --- a/validate_email.py +++ b/validate_email.py @@ -20,6 +20,7 @@ import re import smtplib import logging +import socket try: import DNS @@ -95,6 +96,7 @@ def validate_email(email, check_mx=False, verify=False, debug=False): to be in use as of 2011.""" if debug: logger = logging.getLogger('validate_email') + logger.setLevel(logging.DEBUG) else: logger = None @@ -138,12 +140,42 @@ def validate_email(email, check_mx=False, verify=False, debug=False): return None except AssertionError: return False - except ServerError: + except (ServerError, socket.error) as e: if debug: - logger.debug(u'ServerError exception raised.') + logger.debug('ServerError or socket.error exception raised (%s).', e) return None return True +if __name__ == "__main__": + import time + while True: + email = raw_input('Enter email for validation: ') + + mx = raw_input('Validate MX record? [yN] ') + if mx.strip().lower() == 'y': + mx = True + else: + mx = False + + validate = raw_input('Try to contact server for address validation? [yN] ') + if validate.strip().lower() == 'y': + validate = True + else: + validate = False + + logging.basicConfig() + + result = validate_email(email, mx, validate, debug=True) + if result: + print "Valid!" + elif result is None: + print "I'm not sure." + else: + print "Invalid!" + + time.sleep(1) + + # import sys # sys.modules[__name__],sys.modules['validate_email_module'] = validate_email,sys.modules[__name__]