【问题标题】:SMTP_HELO returns timeout when running email address validation运行电子邮件地址验证时 SMTP_HELO 返回超时
【发布时间】:2022-06-11 20:12:58
【问题描述】:

使用库py3-validate-email-1.0.5(更多here)检查电子邮件地址是否有效,包括SMTP检查,我无法通过check_smtp步骤,因为我收到以下错误:

Python 脚本

from validate_email import validate_email
from validate_email import validate_email_or_fail
from csv import DictReader

# iterate over each line by column name
with open('email-list.csv', 'r') as read_obj:
    csv_dict_reader = DictReader(read_obj, delimiter=';')
    for row in csv_dict_reader:
        i = 1
        while i < 21:
            header_name = 'Email'+str(i)
            if validate_email_or_fail(
                email_address=row[header_name],
                check_format=True,
                check_blacklist=True,
                check_dns=True,
                dns_timeout=10,
                check_smtp=True,
                smtp_timeout=5,
                smtp_helo_host='emailsrv.domain.com',
                smtp_from_address='email@domain.com',
                smtp_skip_tls=False,
                smtp_tls_context=None,
                smtp_debug=False):
                print('Email ' + row[header_name] + ' is valid.')
            else:
                print('Email ' + row[header_name] + ' is invalid.')
            i += 1

错误:

Traceback (most recent call last):
  File "//./main.py", line 13, in <module>
    if validate_email_or_fail(
  File "/usr/local/lib/python3.9/site-packages/validate_email/validate_email.py", line 59, in validate_email_or_fail
    return smtp_check(
  File "/usr/local/lib/python3.9/site-packages/validate_email/smtp_check.py", line 229, in smtp_check
    return smtp_checker.check(hosts=mx_records)
  File "/usr/local/lib/python3.9/site-packages/validate_email/smtp_check.py", line 197, in check
    raise SMTPTemporaryError(error_messages=self.__temporary_errors)
validate_email.exceptions.SMTPTemporaryError: Temporary error in email address verification:
mx.server.com: 451 timed out (in reply to 'connect')

我认为我的 DNS 设置有问题(可能),所以我将脚本 docker 化并在 AWS EC2 上运行它,在那里我使用了elastic IP,将它附加到运行 docker 容器的 EC2 实例上,我也使用此elastic IP 为域emailsrv.domain.com 设置reverse DNS。尝试运行脚本,没有变化。

然后我添加了指向emailsrv.domain.comMX 记录,但仍然没有变化。 DNS 记录设置正确,因为我已经使用多个可用的 DNS 工具对其进行了检查。

由于图书馆不需要实际使用我的电子邮件地址登录详细信息,我想知道可能是什么问题?可以肯定的是,脚本中使用的电子邮件地址不存在,因为我显然没有在该实例上设置 smtp 服务器。

有什么想法吗?

【问题讨论】:

    标签: python amazon-web-services smtp email-validation


    【解决方案1】:

    这背后的原因是 AWS EC2 实例上的端口关闭。在安全组中打开端口是不够的,您必须send a request to AWS 以便他们解除对端口25 的限制。

    当他们这样做时,完美无缺。

    【讨论】:

      猜你喜欢
      • 2014-06-12
      • 1970-01-01
      • 2019-03-15
      • 1970-01-01
      • 2018-03-13
      • 2011-09-02
      • 2013-02-20
      • 2014-03-12
      • 1970-01-01
      相关资源
      最近更新 更多