python-3.x - 尝试检查电子邮件有效性时出现 WinError 10060
问题描述
我基于我在互联网上找到的代码(同样出现在许多不同的来源中)。我在我的办公室试过这个,它奏效了。但现在我在家(在家工作),我得到了 [WinError 10060]。
确切的错误是(我是巴西人,然后有一个葡萄牙语 setence):
TimeoutError: [WinError 10060] Uma tentativa de conexão falhou porque o componente conectado não respondeu corretamente após um período de tempo ou a conexão estabelecida falhou porque o host conectado não respondeu
import re
import dns.resolver
import socket
import smtplib
email_address = test@anydomain.com
#Step 1: Check email
#Check using Regex that an email meets minimum requirements, throw an error if not
addressToVerify = email_address
match = re.match('^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z] {2,4})$',addressToVerify)
if match == None:
print('Bad Syntax in ' + addressToVerify)
raise ValueError('Bad Syntax')
#Step 2: Getting MX record
#Pull domain name from email address
domain_name = email_address.split('@')[1]
#get the MX record for the domain
records = dns.resolver.query(domain_name, 'MX')
mxRecord = records[0].exchange
mxRecord = str(mxRecord)
#Step 3: ping email server
#check if the email address exists
# Get local server hostname
host = socket.gethostname()
# SMTP lib setup (use debug level for full output)
server = smtplib.SMTP()
server.set_debuglevel(1)
# SMTP Conversation
server.connect(mxRecord)
server.helo(host)
server.mail('me@domain.com')
code, message = server.rcpt(str(addressToVerify))
server.quit()
# Assume 250 as Success
if code == 250:
print('Y')
else:
print('N')
解决方案
可能是代理的原因。
如果您使用的是 Linux 系统,请删除环境变量或 bash 配置文件/终端中的任何代理。以管理员身份打开命令终端或在 Linux 终端的情况下以 sudo 运行,然后尝试。
推荐阅读
- azure - 处理多个环境,在 Azure Devops 中启动测试环境
- xml - 移除 xml 元素和父节点
- linux - 将文件从 docker 容器内部发送到外部
- php - 将 Woocommerce 结帐中的自定义值保存为自定义订单元数据
- shell - curl 更改 multipart/form-data 路径参数
- r - 过滤完全相同的字符串返回 0
- windows-10 - 在注册表中使用 DelegateExecute 键
- python - 使用 Pandas 将字符串旋转到更多列
- c# - 如何在保存的备份文件中添加时间戳
- cytoscape.js - 如何获取我拖放要拖动的节点的节点的 id