我正在尝试用python验证电子邮件,首先我做了一个简单的语法检查,它可以正常工作,然后我继续检查SMTP,它可以工作,但是如果我运行整个数据集,我的IP将被禁止,有没有办法在不禁止我的IP的情况下进行检查
代码如下:
def check_email(email):
# Address used for SMTP MAIL FROM command
fromAddress = 'corn@bt.com'
# Simple Regex for syntax checking
regex = '^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$'
# Email address to verify
addressToVerify = str(email)
# Syntax check
match = re.match(regex, addressToVerify)
if match == None:
print('Bad Syntax')
raise ValueError('Bad Syntax')
# Get domain for DNS lookup
splitAddress = addressToVerify.split('@')
domain = str(splitAddress[1])
# MX record lookup
records = dns.resolver.query(domain, 'MX')
mxRecord = records[0].exchange
mxRecord = str(mxRecord)
print(mxRecord)
# SMTP lib setup (use debug level for full output)
server = smtplib.SMTP()
server.set_debuglevel(0)
# SMTP Conversation
server.connect(mxRecord)
server.helo(server.local_hostname) ### server.local_hostname(Get local server hostname)
server.mail(fromAddress)
code, message = server.rcpt(str(addressToVerify))
server.quit()
# print(code)
# print(message)
# Assume SMTP response 250 is success
if code == 250:
return ("True")
else:
return ("False")
谢谢
这是我写的参考代码,它成功地为我工作,你也可以试试这个
导入DNS库并获取邮件交换器查询:
验证,无论电子邮件地址和域名是否存在
相关问题 更多 >
编程相关推荐