Esempio n. 1
0
class EmailAddress:
    """Represents an email address, optionally with the person's name."""

    email_validator = EmailValidator()

    def __init__(self, email: str, name: str = ''):
        """Validate *email* and instantiate."""
        self.email_validator.validate_or_raise(email)
        self.email = email
        self.name = name

    def to_mailer(self) -> Union[str, Tuple[str, str]]:
        """Return either email or a 2-tuple (name, email)."""
        return (self.name, self.email) if self.name else self.email

    def __str__(self) -> str:
        return f'"{self.name}" <{self.email}>' if self.name else self.email
Esempio n. 2
0
class EmailAddress:
    """Represents an email address, optionally with the person's name."""

    email_validator = EmailValidator()
    email: TEmailAddress
    name: TPersonsName

    def __init__(self,
                 email: TEmailAddress,
                 name: TPersonsName = TPersonsName("")):
        """Validate *email* and instantiate."""
        self.email_validator.validate_or_raise(email)
        self.__dict__["email"] = email  # avoid frozen dataclass error
        self.__dict__["name"] = name  # avoid frozen dataclass error

    def to_mailer(self) -> Union[str, Tuple[str, str]]:
        """Return either email or a 2-tuple (name, email)."""
        return (self.name, self.email) if self.name else self.email

    def __str__(self) -> str:
        return f'"{self.name}" <{self.email}>' if self.name else self.email
Esempio n. 3
0
 def test_email_validator(self):
     v = EmailValidator()
     # Correct email addresses
     email, err = v.validate('*****@*****.**')
     assert not err
     email, err = v.validate('  [email protected]  ')
     assert not err
     email, err = v.validate("a.a-a+a_a!a#a$a%a&a'a/a=a`a|a~a?a^a{a}"
                             "a*[email protected]")
     assert not err
     email, err = v.validate('*****@*****.**')
     assert not err
     email, err = v.validate('customer/[email protected]')
     assert not err
     email, err = v.validate('[email protected]')
     assert not err
     email, err = v.validate('!def!xyz%[email protected]')
     assert not err
     email, err = v.validate('*****@*****.**')
     assert not err
     # Incorrect email addresses
     email, err = v.validate('Abc.example.com')
     assert err
     email, err = v.validate('A@[email protected]')
     assert err
     email, err = v.validate('*****@*****.**')
     assert err
     email, err = v.validate('*****@*****.**')
     assert err
     email, err = v.validate('ã@example.com')
     assert err
     email, err = v.validate('\@example.com')
     assert err
Esempio n. 4
0
        assert not err
        email, err = v.validate('!def!xyz%[email protected]')
        assert not err
        email, err = v.validate('*****@*****.**')
        assert not err
        # Incorrect email addresses
        email, err = v.validate('Abc.example.com')
        assert err
        email, err = v.validate('A@[email protected]')
        assert err
        email, err = v.validate('*****@*****.**')
        assert err
        email, err = v.validate('*****@*****.**')
        assert err
        email, err = v.validate('ã@example.com')
        assert err
        email, err = v.validate('\@example.com')
        assert err


if __name__ == '__main__':  # Interactive test
    v = EmailValidator(lookup_dns='a')
    while True:
        email = \
            raw_input('Type an email or CTRL-C to quit: ').decode('utf8')
        email, err = v.validate(email)
        if err:
            print('Error: ' + err)
        else:
            print('E-mail is valid: ' + email)  # the email, corrected