예제 #1
0
 def normalize_email(email):
     """
         Return a normalized form of the email address:
         - lowercase
         - applying host-specific rules for domains hosted by Google, Microsoft, Yahoo, Fastmail
     """
     return email_normalize.normalize(email.strip(), resolve=False)
예제 #2
0
 def test_invalid_domain_part(self):
     address = '{}@{}'.format(uuid.uuid4(), uuid.uuid4())
     result = email_normalize.normalize(address)
     self.assertIsInstance(result, email_normalize.Result)
     self.assertEqual(result.address, address)
     self.assertEqual(result.normalized_address, address)
     self.assertListEqual(result.mx_records, [])
     self.assertIsNone(result.mailbox_provider)
예제 #3
0
파일: ctl.py 프로젝트: yosshy/amane
def normalize(addresses):
    logging.debug(addresses)
    result = []
    for address in addresses:
        try:
            cleaned = email_normalize.normalize(address, resolve=False)
            if isinstance(cleaned, str):
                result.append(cleaned)
        except:
            pass
    return set(result)
예제 #4
0
 def _perform_test(self, address: str, normalized: str,
                   mx_records: typing.List[typing.Tuple[int, str]],
                   provider: typing.Optional[str]):
     with mock.patch('email_normalize.Normalizer.mx_records') as mxr:
         mxr.return_value = mx_records
         result = email_normalize.normalize(address)
     self.assertIsInstance(result, email_normalize.Result)
     self.assertEqual(result.address, address)
     self.assertEqual(result.normalized_address, normalized)
     self.assertListEqual(result.mx_records, mx_records)
     self.assertEqual(result.mailbox_provider, provider)
예제 #5
0
    def clean_email(self, *args, **kwargs):
        address = self.cleaned_data['email']
        norm_addr = email_normalize.normalize(address)
        _, domain = norm_addr.rsplit('@', 1)

        if domain in utils.get_config('email_host_blacklist'):
            raise ValidationError(
                ('Accounts can not be resistered with email addresses '
                 'provided by this host.'),
                code='BAD_HOST')

        if Poster.objects.filter(normalized_email=norm_addr).count():
            raise ValidationError(
                'Email address is already associated with an account',
                code='TOO_SIMILAR')

        return address
예제 #6
0
 def test_normalization(self):
     self.assertEqual(normalize('*****@*****.**'),
                      '*****@*****.**')
예제 #7
0
 def test_normalization_tld_b(self):
     self.assertEqual(normalize('*****@*****.**'),
                      '*****@*****.**')
예제 #8
0
 def test_normalization(self):
     self.assertEqual(normalize('*****@*****.**'),
                      '*****@*****.**')
예제 #9
0
 def test_no_resolution(self):
     self.assertEqual(normalize('"Me!" <*****@*****.**>', False),
                      '*****@*****.**')
예제 #10
0
 def test_mx_verification_normalization(self):
     self.assertEqual(normalize('*****@*****.**'),
                      '*****@*****.**')
예제 #11
0
 def test_gmail_domain_part(self):
     self.assertEqual(normalize('"Me!" <*****@*****.**>'),
                      '*****@*****.**')
예제 #12
0
 def test_fastmail_variation_b(self):
     self.assertEqual(normalize('*****@*****.**'),
                      '*****@*****.**')
예제 #13
0
 def test_fastmail_variation_a(self):
     self.assertEqual(normalize('*****@*****.**'),
                      '*****@*****.**')
예제 #14
0
def set_normalized_email(sender, instance, **kwargs):
    if instance.email:
        instance.normalized_email = email_normalize.normalize(instance.email)
예제 #15
0
def normalize_email(apps, schema_editor):
    Poster = apps.get_model('ISS', 'Poster')
    for poster in Poster.objects.all():
        poster.normalized_email = normalize(poster.email)
        poster.save()
예제 #16
0
# pip install email-normalize

from email_normalize import normalize
# from email_normalizer import normalize

normalized = normalize('*****@*****.**')
print(normalized)

normalized = normalize('*****@*****.**')
print(normalized)

normalized = normalize('*****@*****.**')
print(normalized)