我尝试验证电子邮件,但我遇到了一些困难:
我经常会遇到一些错误,例如
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.
如果我收到此错误,我应该跳过此域名的电子邮件,对吗?
当我尝试获取mxrecords时,有时它们的数量不止一个。我应该使用它来检查电子邮件,还是可以随机使用?
我使用下一个代码来做到这一点:
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()
中指定了我的邮件,但是我尝试登录后检查电子邮件,但是没有得到任何结果,所以我退出了。为什么会这样?
答案 0 :(得分:1)
您是否手动核对mx
?
似乎端口25未打开连接并且找不到mx记录,因此在对aruanaestetik.com进行手动检查时返回no mx record exists
的错误,获取消息no mx recorf found
答案 1 :(得分:1)
我的回答中没有代码,我想描述这个过程并专注于错误处理。
电子邮件地址的格式为user@domain.com
要检查域部分,您必须从DNS获取MX记录。如果(且仅当)没有MX,则应使用A记录。不过,我会把这种情况视为错误配置的邮件系统。
进行DNS查找时,可能会出现两组错误:临时错误(例如超时)和持续错误(例如NXDOMAIN)。在出现瞬态错误的情况下,应该稍后重复查找。
通常有多条MX记录。它们具有数字优先级。较小的数字=较高的优先级。邮件始终从较高的MX编号移动到较低的MX编号。
要检查地址的用户部分,您必须联系具有最高优先级的服务器。所有其他都是备份服务器,他们无法访问用户数据库是很常见的。他们只接受自己域名的所有邮件。
您的发件人地址很可能因任何原因被拒绝。使用为错误消息保留的空地址<>
。
同样,与SMTP服务器通信时存在两组错误。幸运的是,SMTP响应有一个3位数的代码。第一个数字是2表示成功,4表示暂时错误(稍后重试)和5表示永久故障。
最后一点:如果您不打算发送电子邮件,请在QUIT之前进行SMTP RSET。