尝试创建电子邮件验证,而不使用此链接中的stmplib发送电子邮件
http://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/
由于我还没有编写任何代码并试图了解正在发生的事情。
您似乎必须使用其中一个付费代理服务器,例如mailgun。 (如果我错了,请纠正我)
我们还有其他方法可以验证电子邮件地址吗?
答案 0 :(得分:2)
可以使用此python代码实现used方法 你需要安装dnspython并调用verify_mail(mail)
import re
import smtplib
import dns.resolver # from http://www.dnspython.org/
def get_mx(domain):
for x in dns.resolver.query(domain, 'MX'):
return x.to_text().split()[1].strip('.')
def verify_mail(mail):
domain=re.findall('@(.*)', mail)[0]
mx=get_mx(domain)
smtp=smtplib.SMTP(mx)
i,m=smtp.connect(mx)
i,m=smtp.helo()
i,m=smtp.verify(target)
if i==250: return True
else:
i,m=smtp.mail('myemail@gmail.com')
i,m=smtp.rcpt(target)
if i==250: return True
else: return False
if __name__=='__main__':
print verify_mail('banana@yahoo.com')
答案 1 :(得分:2)
GAE尚不支持此方法。所述方法要求您连接到SMTP服务器并询问服务器是否存在电子邮件地址。这需要GAE上的出站套接字支持,not yet available(除非您通过trusted testers program接受)。您需要出站套接字支持,以便在域上执行DNS查询查询以使SMTP服务器连接到该服务器,以及实际连接到SMTP服务器。
您还应该意识到此方法不适用于所有SMTP服务器实现。某些服务器可能无法响应这些类型的请求。
我认为现在你必须推出自己的实现来通过HTTP工作或支付为你做这件事的服务。
<强>更新强>
从1.7.7 SDK开始,Sockets API已经发布了实验状态。虽然他们明确禁止在传出套接字上连接到端口25(smtp)。这将极大地禁止您可以连接多少SMTP服务器(通过端口587)来验证给定的电子邮件地址。