Python 无法检查诸如yahoo和outlooks等域的mx记录

Python 无法检查诸如yahoo和outlooks等域的mx记录,python,smtplib,mx-record,Python,Smtplib,Mx Record,我正在尝试编写一个python脚本,该脚本将检查包含整个列表的csv文件中邮件ID的真实性。 我正在对每个电子邮件ID进行这三项检查 1。正则表达式检查 regex = re.compile( r'^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$') splitAddress = email.split('@') domain = str(splitAddress[1]) records =

我正在尝试编写一个python脚本,该脚本将检查包含整个列表的csv文件中邮件ID的真实性。 我正在对每个电子邮件ID进行这三项检查

1。正则表达式检查

regex = re.compile(
        r'^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$')
splitAddress = email.split('@')
domain = str(splitAddress[1])
records = dns.resolver.query(domain, 'MX')
mxRecord = records[0].exchange
mxRecord = str(mxRecord)
server = smtplib.SMTP()
server.set_debuglevel(0)
server.connect(mxRecord)
server.helo(server.local_hostname) 
server.mail('abc@bt.com')
code, message = server.rcpt(str(email))
server.quit()
2。域检查

regex = re.compile(
        r'^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$')
splitAddress = email.split('@')
domain = str(splitAddress[1])
records = dns.resolver.query(domain, 'MX')
mxRecord = records[0].exchange
mxRecord = str(mxRecord)
server = smtplib.SMTP()
server.set_debuglevel(0)
server.connect(mxRecord)
server.helo(server.local_hostname) 
server.mail('abc@bt.com')
code, message = server.rcpt(str(email))
server.quit()
3。SMTP会话检查

regex = re.compile(
        r'^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$')
splitAddress = email.split('@')
domain = str(splitAddress[1])
records = dns.resolver.query(domain, 'MX')
mxRecord = records[0].exchange
mxRecord = str(mxRecord)
server = smtplib.SMTP()
server.set_debuglevel(0)
server.connect(mxRecord)
server.helo(server.local_hostname) 
server.mail('abc@bt.com')
code, message = server.rcpt(str(email))
server.quit()
我遇到的问题是,它没有在一些域上运行,比如YahooOutlook,我列表中的一些随机域是pmrelocations.com

我得到的回溯错误是:

Traceback (most recent call last):
  File "mxrecord.py", line 41, in <module>
    server.helo(server.local_hostname)
  File "C:\Python27\lib\smtplib.py", line 404, in helo
    (code, msg) = self.getreply()
  File "C:\Python27\lib\smtplib.py", line 369, in getreply
    raise SMTPServerDisconnected("Connection unexpectedly closed")
smtplib.SMTPServerDisconnected: Connection unexpectedly closed

回溯(最近一次呼叫最后一次):
文件“mxrecord.py”,第41行,在
server.helo(server.local_主机名)
文件“C:\Python27\lib\smtplib.py”,第404行,在helo中
(代码,msg)=self.getreply()
getreply中第369行的文件“C:\Python27\lib\smtplib.py”
升起SMTPServerDisconnected(“连接意外关闭”)
smtplib.SMTPServerDisconnected:连接意外关闭
您可以在此处查看完整的代码:

我知道这段代码需要优化,但我目前正致力于使其工作,并将在完成所有实际检查后对其进行优化


我没有得到任何关于如何解决这个问题的线索。我是所有SMTP和DNS方面的初学者。请指导我如何解决此问题。

您似乎无法连接到本地主机名。您能打印服务器本地主机名吗?可能您有一些防火墙问题。我打印了server.local_hostname并从回溯中获得了此结果[10.1.0.126],当您尝试从SMTP服务器获取响应时,连接似乎已关闭。连接已建立,但当您发送
helo
命令时,连接将关闭。该命令是标识客户端的命令。您的主机可能无法连接到SMTP服务器。嘿@vtemian,我在internet上搜索过。我偶然发现了这个答案:。我看起来对吗?嗨@vtemian,我修改了代码,让雅虎工作了。你能看看我最近发布的问题,帮我处理outlook邮件吗。这是到Question的链接:看起来您无法连接到本地主机名。您能打印服务器本地主机名吗?可能您有一些防火墙问题。我打印了server.local_hostname并从回溯中获得了此结果[10.1.0.126],当您尝试从SMTP服务器获取响应时,连接似乎已关闭。连接已建立,但当您发送
helo
命令时,连接将关闭。该命令是标识客户端的命令。您的主机可能无法连接到SMTP服务器。嘿@vtemian,我在internet上搜索过。我偶然发现了这个答案:。我看起来对吗?嗨@vtemian,我修改了代码,让雅虎工作了。你能看看我最近发布的问题,帮我处理outlook邮件吗。以下是Question的链接: