import re def is_email_address_valid(email_address: str) -> bool: """ Checks if email_address is a valid email address. Is not completely RFC 5322 compliant, but it is good enough for most use cases. :raw-html:`
` Here are examples of mistakes that it will not catch: :raw-html:`
` Valid but fails: - email@[123.123.123.123] is VALID => PASSED : False - “email”@example.com is VALID => PASSED : False - very.unusual.“@”.unusual.com@example.com is VALID => PASSED : False - very.“(),:;<>[]”.VERY.“very@\\ "very”.unusual@strange.example.com is VALID => PASSED : False Invalid but passes: - email@example.com (Joe Smith) is INVALID => PASSED : True - email@111.222.333.44444 is INVALID => PASSED : True :raw-html:`
` ----- :param email_address: str :return: bool """ pattern = re.compile( r"[a-z\d!#$%&'*+?^_`{|}~-]+(?:\.[a-z\d!#$%&'*+?^_`" r"{|}~-]+)*@(?:[a-z\d](?:[a-z\d-]*[a-z\d])?\.)+[a-z\d](?:[a-z\d-]*[a-z\d])?", re.IGNORECASE, ) return bool(pattern.match(email_address))