code: def certify_email(value, required=True):
      
      certify_required(
          value=value,
          required=required,
      )
      certify_string(value, min_length=3, max_length=320)
  
      try:
          certification_result = email_validator.validate_email(
              value,
              check_deliverability=False,
          )
      except email_validator.EmailNotValidError as ex:
          six.raise_from(
              CertifierValueError(
                  message="{value!r} is not a valid email address: {ex}".format(
                      value=value,
                      # email_validator returns unicode characters in exception string
                      ex=six.u(repr(ex))
                  ),
                  value=value,
                  required=required,
              ),
              ex
          )
      else:
          if certification_result['email'] != value:
              raise CertifierValueError(
                  message="{value!r} is not normalized, should be {normalized!r}".format(
                      value=value, normalized=certification_result['email']),
                  value=value,
                  required=required,
              )
docs: Certifier which verifies that email addresses are well-formed.
  
      Does not check that the address exists.
  
      :param six.string_types value:
          The email address to certify. **Should be normalized!**
      :param bool required:
          Whether the value can be `None`. Defaults to True.
      :return:
          The certified email address.
      :rtype:
          six.string_types
      :raises CertifierTypeError:
          The type is invalid
      :raises CertifierValueError:
          The valid is invalid