代码之家  ›  专栏  ›  技术社区  ›  Pierre

用于验证电子邮件的函数(识别IDN)

  •  0
  • Pierre  · 技术社区  · 14 年前

    是否有任何python函数可以验证电子邮件地址,了解idn域? 例如,user@example.com应该和user@z·z.de或user@_±.ac.jp一样正确。

    谢谢。

    3 回复  |  直到 13 年前
        1
  •  2
  •   vls    14 年前

    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/

        2
  •  1
  •   kindall    14 年前

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

        3
  •  0
  •   David Hall    13 年前

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

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

    检查一下是否打开了。