验证电子邮件的功能(IDN识别)

时间:2010-09-27 17:43:15

标签: python

是否有任何python函数验证电子邮件地址,知道IDN域? 例如,user @ example.com应与user@zääz.de或user @纳豆.ac.jp一样正确

感谢。

3 个答案:

答案 0 :(得分:2)

Django从版本1.2开始支持IDN电子邮件验证。

请在此处查看验证代码:http://code.djangoproject.com/svn/django/trunk/django/core/validators.py

参考:http://docs.djangoproject.com/en/1.2/ref/forms/fields/#emailfield

示例:

Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from django.core.validators import validate_email
>>> try: validate_email(u'user@example.com'); print "passed"
... except: print "failed"
... 
passed
>>> try: validate_email(u'user@zääz.de'); print "passed"
... except: print "failed"
... 
passed
>>> try: validate_email(u'user@納豆.ac.jp'); print "passed"
... except: print "failed"
... 
passed
>>> try: validate_email(u'this-should-fail@@納豆.ac.jp'); print "passed"
... except: print "failed"
... 
failed

您可能需要先定义一些环境设置才能使用Django模块,请参阅此处的文档:http://docs.djangoproject.com/en/dev/

答案 1 :(得分:1)

验证电子邮件地址非常困难,因为语法非常灵活。最好的策略是将测试电子邮件发送到输入的地址。

答案 2 :(得分:0)

我认为最好的方法是通过HTTP请求打开邮件服务器端口,看看它是否响应

web = httplib.HTTPConnection(domain, 25, timeout=5)
web.connect()

并检查是否会打开。