Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:使用smtplib验证电子邮件_Python_Email_Email Validation_Smtplib - Fatal编程技术网

Python:使用smtplib验证电子邮件

Python:使用smtplib验证电子邮件,python,email,email-validation,smtplib,Python,Email,Email Validation,Smtplib,我尝试验证电子邮件,但遇到一些困难: 例如,我经常会犯一些错误 dns.resolver.NoAnswer: The DNS response does not contain an answer to the question: siemens.ru. IN MX 这是什么意思?我不能检查电子邮件或其他?还是我应该再试一次 smtplib.SMTPServerDisconnected: Connection unexpectedly closed 有什么办法解决这个问题吗?它经常出现 dn

我尝试验证电子邮件,但遇到一些困难:

例如,我经常会犯一些错误

dns.resolver.NoAnswer: The DNS response does not contain an answer to the question: siemens.ru. IN MX
这是什么意思?我不能检查电子邮件或其他?还是我应该再试一次

smtplib.SMTPServerDisconnected: Connection unexpectedly closed
有什么办法解决这个问题吗?它经常出现

dns.resolver.NXDOMAIN: None of DNS query names exist: aruanaestetik.com., aruanaestetik.com.
如果我收到这个错误,我应该跳过这个域的电子邮件,对吗

此外,当我尝试获取MX记录时,有时它们的数量会超过一个。我应该用每一个来检查电子邮件,还是我可以用一个随机的

我使用下一个代码来实现这一点:

    resolver = dns.resolver.Resolver()
    resolver.timeout = 60
    resolver.lifetime = 60
    mx_records = resolver.query(dom, 'MX')
    mxRecord = str(mx_records[0].exchange)
    host = socket.gethostname()
    server = smtplib.SMTP()
    server.set_debuglevel(0)
    server.connect(mxRecord)
    server.helo(host)
    server.mail('me@domain.com')
    code, message = server.rcpt(str(addressToVerify))
    server.quit()

另外,我只在
server.mail()中指定我的邮件,但我尝试登录到那里,然后检查邮件,但没有得到任何结果,所以我注销了。为什么会发生这种情况?

您是否手动检查了
mx


似乎端口25未打开以进行连接,并且找不到mx记录,因此它返回一个错误,即在对aruanaestetik.com进行手动检查时,
没有mx记录存在
,您是否手动检查了
mx


似乎端口25未打开以进行连接,并且找不到mx记录,因此它返回一个错误,即在对aruanaestetik.com进行手动检查时,
无mx记录存在
,收到消息
无mx记录
我的答案中将没有代码,我想描述这个过程,重点介绍错误处理

电子邮件地址的格式为
user@domain.com

要检查域部分,您必须从DNS获取MX记录。如果(且仅当)没有MX,则应使用A记录。不过,我会把这种情况看作是一个配置错误的邮件系统。

在进行DNS查找时,可能会发生两组错误:暂时性错误(例如超时)和永久性错误(例如NXDOMAIN)。如果出现暂时性错误,应在以后重复查找

通常有多个MX记录。它们具有数字优先级。数字越小,优先级越高。邮件总是从较高的MX号码发送到较低的MX号码

为了检查地址的用户部分,您必须联系具有最高优先级的服务器。所有其他服务器都是备份服务器,它们通常无法访问用户数据库。他们只接受自己域的所有邮件

无论出于何种原因,您的发件人地址都有可能被拒绝。使用为错误消息保留的空地址

同样,与SMTP服务器通信时存在两组错误。幸运的是,SMTP响应有一个3位代码。第一位数字为2表示成功,4表示暂时性错误(稍后重试),5表示永久性故障


最后一点注意:如果您不打算实际发送电子邮件,请在退出之前执行SMTP RSET。

我的答案中没有代码,我想描述一下过程并重点介绍错误处理

电子邮件地址的格式为
user@domain.com

要检查域部分,您必须从DNS获取MX记录。如果(且仅当)没有MX,则应使用A记录。不过,我会把这种情况看作是一个配置错误的邮件系统。

在进行DNS查找时,可能会发生两组错误:暂时性错误(例如超时)和永久性错误(例如NXDOMAIN)。如果出现暂时性错误,应在以后重复查找

通常有多个MX记录。它们具有数字优先级。数字越小,优先级越高。邮件总是从较高的MX号码发送到较低的MX号码

为了检查地址的用户部分,您必须联系具有最高优先级的服务器。所有其他服务器都是备份服务器,它们通常无法访问用户数据库。他们只接受自己域的所有邮件

无论出于何种原因,您的发件人地址都有可能被拒绝。使用为错误消息保留的空地址

同样,与SMTP服务器通信时存在两组错误。幸运的是,SMTP响应有一个3位代码。第一位数字为2表示成功,4表示暂时性错误(稍后重试),5表示永久性故障


最后一点注意:如果您不打算实际发送电子邮件,请在退出之前执行SMTP RSET。

否,我使用
dns.resolver.query(domain,'MX')
来执行此操作。你能解释一下吗,如果域中包含大量的
mx
,我可以检查每封邮件吗?dns.resolver.query(域,'mx')返回你询问的错误,当找不到mx和/或p25关闭时,你可以检查每封邮件,但当你尝试发送时,只有一封允许登录。否,我使用
dns.resolver.query(域,'MX')
来做。您能解释一下,如果域中包含大量的
MX
,我可以检查每个域的电子邮件吗?dns.resolver.query(域,'MX'))返回您在找不到mx和/或p25关闭时询问的错误,是的,您可以检查每封邮件,但当您尝试发送时,只有一封邮件允许登录谢谢您的解释。但是
A记录是什么?
?是否有“战斗”的方法
smtplib.SMTPServerDisconnected:连接意外关闭
?@PetrPetrov“A”记录是一种DNS记录,将名称映射到其IP地址,更准确地说是IPv4地址。相应的IPv6“A”记录命名为“AAAA”。[@Petrportov关于意外的结束,如果SMTP对话太频繁,我会调试它。我想检查来自EHLO、MAIL和RCPT的回复。对不起,我没有更好的主意。谢谢)我会搜索更多信息。你帮了我)谢谢你的解释。但是
记录是什么?
?有什么办法“打架”吗当
smtplib.SMTPServerDisconnected时:连接意外关闭
?@PetrPetrov“A”记录是一种DNS记录,将名称映射到其IP地址,更准确地说是IPv4地址。Th