检查的电子邮件中是否存在与否,只适用于Gmail帐户,其他人没有工作
我创建一个Python函数检查一个给定的电子邮件ID是否真正在Python的存在与否。这里是我的代码:检查的电子邮件中是否存在与否,只适用于Gmail帐户,其他人没有工作
def email_validate(email_address):
addressToVerify = email_address
domain_name = addressToVerify.split('@')[1]
try:
records = dns.resolver.query(domain_name, 'MX')
except Exception as e:
print e
a = traceback.format_exc()
print a
return HttpResponse(json.dumps({"success":False,"message":"Email Domain is not valid."}), content_type="application/json")
mxRecord = records[0].exchange
mxRecord = str(mxRecord)
server = smtplib.SMTP()
server.set_debuglevel(0)
# SMTP Conversation
server.connect(mxRecord)
server.helo(host)
server.mail('[email protected]')
try:
code, message = server.rcpt(str(addressToVerify))
server.quit()
except:
a = traceback.format_exc()
if code == 250:
return HttpResponse(json.dumps({"success":True,"message":"Email ID is valid."}), content_type="application/json")
else:
return HttpResponse(json.dumps({"success":False,"message":"Email ID is not valid."}), content_type="application/json")
此代码工作正常使用Gmail帐户,但它给出了一个错误的其他电子邮件ID的。如果我尝试其他电子邮件ID的,这条线:
code, message = server.rcpt(str(addressToVerify))
给出了一个错误...... 还有,我应该怎么检查这对其他电子邮件ID的?
的RCPT命令是从来没有检查电子邮件验证是个好主意,大多数SMTP服务器将多次尝试后禁止你的IP或忽略你的命令,以保持他们的电子邮件从垃圾邮件发送者的安全。 验证电子邮件存在的唯一方法是发送验证电子邮件。
我正在实施这种检查,因为我的邮件大部分都在弹跳,这可能会影响我的声誉。因此,在发送电子邮件之前,我需要验证它。 –
在这种情况下,您应该联系SMTP服务器管理员并要求获得许可,您可以尝试的另一件事是尝试为同一个域创建相同的电子邮件(yahoo,谷歌...)使用浏览器自动化,看看用户名是否被采取,但唯一可靠的方法是发送确认链接或标记 – SEDaradji
我会有大量的电子邮件。我无法发送和确认 –
如果你只需要检查你的谷歌电子邮件域对于G套件,您可以使用这些:
1)首先,你需要得到正确的凭据,以便能够为范围https://www.googleapis.com/auth/admin.directory.user.readonly访问数据 - https://developers.google.com/admin-sdk/directory/v1/guides/delegation#delegate_domain-wide_authority_to_your_service_account
2)其次,您可以使用这些凭据创建的服务对象,以检查是否存在邮件:https://developers.google.com/admin-sdk/directory/v1/quickstart/python
你尝试只是一个单独的程序与几个不同的手工编码的投入'server.rcpt(STR (addressToVerify))'来验证它是否工作NG?另外,准确的错误是什么?你可以在'try'块中找到它,所以你应该处理异常... –
你可以尝试使用[validate_email](https://pypi.python.org/pypi/validate_email)包! –
你会得到什么错误? – Nurjan