Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.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验证电子邮件时被Spamhaus阻止_Python_Smtp - Fatal编程技术网

试图使用Python验证电子邮件时被Spamhaus阻止

试图使用Python验证电子邮件时被Spamhaus阻止,python,smtp,Python,Smtp,我试图使用Python的smtplib检查电子邮件是否存在 这就是我所做的: s = smtplib.SMTP() s.connect(mxRecord) s.mail('my@email.com') //Here the error shows up 错误是: 客户端主机[]使用Spamhaus被阻止。要请求从列表中删除,请参见(S3130)我尝试了一些方法,效果很好 import dns.resolver, smtplib MyEmail = "X@hotmail.com" MyPass

我试图使用Python的smtplib检查电子邮件是否存在

这就是我所做的:

s = smtplib.SMTP()
s.connect(mxRecord) 
s.mail('my@email.com') //Here the error shows up
错误是:
客户端主机[]使用Spamhaus被阻止。要请求从列表中删除,请参见(S3130)

我尝试了一些方法,效果很好

import dns.resolver, smtplib
MyEmail = "X@hotmail.com"
MyPassword = "XXX"
EmailToValidate = "X@Y.com"

record = dns.resolver.query(str.split(EmailToValidate, "@")[1], "MX")
mx = str(record[0].exchange)

server = smtplib.SMTP("smtp.live.com", 587)
server.ehlo()
server.starttls()
server.ehlo()
server.login(MyEmail, MyPassword)
server.helo("live.com")
server.connect(mx)
server.mail(MyEmail)

code, msg = server.rcpt(EmailToValidate)
print("Code: ", str(code), " message: ", msg)
如果电子邮件存在,(代码,消息)对将是(250,正常),如果电子邮件不存在,(550,地址被拒绝)


我写这篇文章是为了赶时间,所以可能会有一些不必要的步骤。

你需要把自己从黑名单上除名(SpamHaus)。但是,我不建议这样做。想象一下,一个垃圾邮件发送者可以检查“有效的电子邮件地址”——这将是一个非常简单的获取技术。这可能是你的应用程序被标记的原因。让自己脱离黑名单需要有一封非免费电子邮件(hotmail和gmail不被接受)。我想这和你在这里提到的原因是一样的。我想知道是否有其他方法可以与SMTP通信以获取状态代码。我猜您有一个需要重新访问的假设。有更多的标准方法来验证电子邮件地址,验证它是否收到,等等。如果有一千个电子邮件地址需要验证,该怎么办:-/有一些服务跟踪这类事情。否则,要非常小心,因为很容易与反欺诈/垃圾邮件/黑客措施发生冲突。