use email_validator instead of validate_email which isn't updated for a while

This commit is contained in:
Son Nguyen Kim 2021-09-10 16:38:59 +02:00
parent 6b65e00dcf
commit 8023afe9be
3 changed files with 16 additions and 27 deletions

View File

@ -6,22 +6,22 @@ import quopri
import random import random
import re import re
import time import time
from copy import deepcopy
from email.errors import HeaderParseError from email.errors import HeaderParseError
from email.header import decode_header from email.header import decode_header, Header
from email.message import Message from email.message import Message
from email.mime.multipart import MIMEMultipart from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText from email.mime.text import MIMEText
from email.utils import make_msgid, formatdate, parseaddr from email.utils import make_msgid, formatdate, parseaddr
from smtplib import SMTP, SMTPServerDisconnected from smtplib import SMTP, SMTPServerDisconnected
from typing import Tuple, List, Optional from typing import Tuple, List, Optional, Union
from copy import deepcopy
import arrow import arrow
import dkim import dkim
import spf import spf
from email_validator import validate_email, EmailNotValidError
from jinja2 import Environment, FileSystemLoader from jinja2 import Environment, FileSystemLoader
from sqlalchemy import func from sqlalchemy import func
from validate_email import validate_email
from app.config import ( from app.config import (
SUPPORT_EMAIL, SUPPORT_EMAIL,
@ -769,10 +769,16 @@ def should_add_dkim_signature(domain: str) -> bool:
def is_valid_email(email_address: str) -> bool: def is_valid_email(email_address: str) -> bool:
"""Used to check whether an email address is valid""" """
return validate_email( Used to check whether an email address is valid
email_address=email_address, check_mx=False, use_blacklist=False NOT run MX check.
) NOT allow unicode.
"""
try:
validate_email(email_address, check_deliverability=False, allow_smtputf8=False)
return True
except EmailNotValidError:
return False
class EmailEncoding(enum.Enum): class EmailEncoding(enum.Enum):

20
poetry.lock generated
View File

@ -423,7 +423,7 @@ requests = "*"
name = "filelock" name = "filelock"
version = "3.0.12" version = "3.0.12"
description = "A platform independent file lock." description = "A platform independent file lock."
category = "main" category = "dev"
optional = false optional = false
python-versions = "*" python-versions = "*"
@ -1166,19 +1166,6 @@ category = "dev"
optional = false optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
name = "py3-validate-email"
version = "0.2.10"
description = "Email validator with regex, blacklisted domains and SMTP checking."
category = "main"
optional = false
python-versions = "*"
[package.dependencies]
dnspython = ">=2.0,<3.0"
filelock = ">=3.0,<4.0"
idna = ">=2.10,<3.0"
[[package]] [[package]]
name = "pyasn1" name = "pyasn1"
version = "0.4.8" version = "0.4.8"
@ -1805,7 +1792,7 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"]
[metadata] [metadata]
lock-version = "1.1" lock-version = "1.1"
python-versions = "^3.7" python-versions = "^3.7"
content-hash = "a80a9f350a39e926d74ea73a7b9d5b04ec8b515bcc2e9bc31bd2537989763aa5" content-hash = "a2f1de1d4ecbe4b1e36d965bb9ba52d10d16b344b6c7e4509a53245b67fdcec5"
[metadata.files] [metadata.files]
aiohttp = [ aiohttp = [
@ -2440,9 +2427,6 @@ py = [
{file = "py-1.9.0-py2.py3-none-any.whl", hash = "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2"}, {file = "py-1.9.0-py2.py3-none-any.whl", hash = "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2"},
{file = "py-1.9.0.tar.gz", hash = "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342"}, {file = "py-1.9.0.tar.gz", hash = "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342"},
] ]
py3-validate-email = [
{file = "py3-validate-email-0.2.10.tar.gz", hash = "sha256:3bbb264b49c0ae09afdb2738956f00b0e8dd7e079e2d079b2e9b6688de474d28"},
]
pyasn1 = [ pyasn1 = [
{file = "pyasn1-0.4.8-py2.4.egg", hash = "sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3"}, {file = "pyasn1-0.4.8-py2.4.egg", hash = "sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3"},
{file = "pyasn1-0.4.8-py2.5.egg", hash = "sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf"}, {file = "pyasn1-0.4.8-py2.5.egg", hash = "sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf"},

View File

@ -74,7 +74,6 @@ gevent = "^20.9.0"
aiospamc = "^0.6.1" aiospamc = "^0.6.1"
email_validator = "^1.1.1" email_validator = "^1.1.1"
PGPy = "^0.5.3" PGPy = "^0.5.3"
py3-validate-email = "^0.2.10"
coinbase-commerce = "^1.0.1" coinbase-commerce = "^1.0.1"
requests = "^2.25.1" requests = "^2.25.1"
newrelic = "^6.4.4" newrelic = "^6.4.4"