pgadmin4/web/pgadmin/utils/validation_utils.py

49 lines
1.6 KiB
Python
Raw Normal View History

##########################################################################
#
# pgAdmin 4 - PostgreSQL Tools
#
2024-01-01 02:43:48 -06:00
# Copyright (C) 2013 - 2024, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
##########################################################################
import email_validator
from email_validator import validate_email as email_validate, \
EmailNotValidError
def validate_email(email, email_config=None):
try:
if email_config is None:
email_config = {}
import config
email_config['CHECK_EMAIL_DELIVERABILITY'] = \
config.CHECK_EMAIL_DELIVERABILITY
email_config['ALLOW_SPECIAL_EMAIL_DOMAINS'] = \
config.ALLOW_SPECIAL_EMAIL_DOMAINS
# Allow special email domains
if isinstance(email_config['ALLOW_SPECIAL_EMAIL_DOMAINS'], str):
email_config['ALLOW_SPECIAL_EMAIL_DOMAINS'] = \
email_config['ALLOW_SPECIAL_EMAIL_DOMAINS'].split(',')
try:
email_validator.SPECIAL_USE_DOMAIN_NAMES = [
d for d in email_validator.SPECIAL_USE_DOMAIN_NAMES
if d not in email_config['ALLOW_SPECIAL_EMAIL_DOMAINS']
]
except Exception:
pass
# Validate.
_ = email_validate(
email,
check_deliverability=email_config['CHECK_EMAIL_DELIVERABILITY'])
# Update with the normalized form.
return True
except EmailNotValidError as e:
# email is not valid, exception message is human-readable
print(str(e))
return False