RFC 822 Mail Address

Let’s first generate an E-mail field:

>>> from z3c.schema.email import RFC822MailAddress
>>> email = RFC822MailAddress()

Check that the constraints of the value are fulfilled:

>>> email.constraint('foo\n')
False
>>> email.constraint('foo\r')
False
>>> email.constraint('foo')
True

Now make sure the E-mail addresses validate:

>>> email.validate(10)
Traceback (most recent call last):
...
WrongType: (10, <type 'unicode'>, '')
>>> email.validate(u'foo@bar.')
Traceback (most recent call last):
...
NotValidRFC822MailAdress: foo@bar.
>>> email.validate(u'foo@bar.com')

Since the field uses a simple function to validate its E-mail fields, it is easier to use it for the tests:

>>> from z3c.schema.email import isValidMailAddress
>>> isValidMailAddress(u'foo@bar.com')
True
>>> isValidMailAddress(u'foo.blah@bar.com')
True
  • Name failures

    >>> isValidMailAddress(u'foo\r@bar.com')
    False
    >>> isValidMailAddress(u'foo<@bar.com')
    False
    >>> isValidMailAddress(u'foo:@bar.com')
    False
    
  • Overall failures

    >>> isValidMailAddress(u'')
    False
    >>> isValidMailAddress(u'foo.')
    False
    >>> isValidMailAddress(u'foo.@bar.com')
    False
    >>> isValidMailAddress(u'.foo@bar.com')
    False
    >>> isValidMailAddress(u'foo@bar.com.')
    False
    
  • Domain failures

    >>> isValidMailAddress(u'foo@')
    False
    >>> isValidMailAddress(u'foo@bar.')
    False
    >>> isValidMailAddress(u'foo@bar')
    False
    >>> isValidMailAddress(u'foo@bar..com')
    False
    >>> isValidMailAddress(u'foo@bar\r.com')
    False
    >>> isValidMailAddress(u'foo@bar<.com')
    False
    >>> isValidMailAddress(u'foo@bar:.com')
    False
    

Reference