def test_subdomain(self): """ email-split splitting an email on a subdomain returns the local part returns the domain part (including subdomain) """ email = email_split('*****@*****.**') self.assertEqual(email.local, 'you') self.assertEqual(email.domain, 'are.super.cool')
def test_top_level_domain(self): """ email-split splitting an email with a top-level domain returns the local part returns the domain part """ email = email_split('*****@*****.**') self.assertEqual(email.local, 'todd') self.assertEqual(email.domain, 'underdog.io')
def getDomain(email): if email is None or email.strip() == "": return None # change sth (special characters) for o, n in email_replace_strs.items(): email = email.replace(o, n) email = email.replace(r"\s", "").lower() email_splits = email_split(email.strip()) domain = email_splits.domain if domain == "": return None return domain
def cleanMatches(self, matchFrame): stopwords = {'the'} for index, row in matchFrame.iterrows(): tempString = cleanco( matchFrame.iloc[index]['company'].lower()).clean_name() resultwords = [ word for word in re.split("\W+", tempString) if word.lower() not in stopwords ] result = ' '.join(resultwords) matchFrame.at[index, 'Clean Company'] = result.translate( None, string.punctuation) try: matchFrame.at[index, 'Email Domain'] = email_split( row['email']).domain except Exception as e: print 'error ' + str(e) print 'no email' pass
def identify_o365(email_domain): email_domain = email_split(open(args.list).readline().rstrip()) headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36', 'Sec-Fetch-Dest': 'document' } url_structure = "https://login.microsoftonline.com/{}/.well-known/openid-configuration".format( email_domain.domain) r = requests.get(url_structure, headers=headers) subscribed = re.search('token_endpoint', r.text) # AADSTS90002 InvalidTenantName - The tenant name wasn't found in the data store. Check to make sure you have the correct tenant ID. if '"error_codes":[90002]' in r.text: #If not subscribed print("The domain isn't using o365") exit() if subscribed: pass
def prepare_email(email): return email_split(email).local, email_split(email).domain
def extract_email(email): """ extract the email addresses from a user-friendly email address""" addresses = email_split(email) return addresses[0] if addresses else ''
def get_possible_email(contact_name, email): split_name_parts = [] try: split_name_parts = pp.parse(contact_name, type='person') except TypeError as e: logger.error("possible_email: " + str(e) + ' - ' + json.dumps(contact_name)) given_name = '' surname = '' for split_name_part in split_name_parts: if split_name_part[1] == 'Surname': surname = split_name_part[0].lower() if split_name_part[1] == 'GivenName': given_name = split_name_part[0].lower() email = email.lower() email_parts = email_split(email) possible_emails = {} domain = email_parts.domain surname_first_letter = surname[0] if len(surname) else '' given_name_first_letter = given_name[0] if len(given_name) else '' possible_emails['given_name|surname'] = "%s%s@%s" % (given_name, surname, domain) possible_emails['given_name|.|surname'] = "%s.%s@%s" % (given_name, surname, domain) possible_emails['given_name|-|surname'] = "%s-%s@%s" % (given_name, surname, domain) possible_emails['given_name|_|surname'] = "%s_%s@%s" % (given_name, surname, domain) possible_emails['surname|given_name'] = "%s%s@%s" % (given_name, surname, domain) possible_emails['surname|.|given_name'] = "%s.%s@%s" % (surname, given_name, domain) possible_emails['surname|-|given_name'] = "%s-%s@%s" % (surname, given_name, domain) possible_emails['surname|_|given_name'] = "%s_%s@%s" % (surname, given_name, domain) possible_emails['surname0|.|given_name'] = "%s.%s@%s" % ( surname_first_letter, given_name, domain) possible_emails['surname0|given_name'] = "%s%s@%s" % (surname_first_letter, given_name, domain) possible_emails['surname0|-|given_name'] = "%s-%s@%s" % ( surname_first_letter, given_name, domain) possible_emails['surname0|_|given_name'] = "%s_%s@%s" % ( surname_first_letter, given_name, domain) possible_emails['given_name0|.|surname'] = "%s.%s@%s" % ( given_name_first_letter, surname, domain) possible_emails['given_name0|surname'] = "%s%s@%s" % ( given_name_first_letter, surname, domain) possible_emails['given_name0|-|surname'] = "%s-%s@%s" % ( given_name_first_letter, surname, domain) possible_emails['given_name0|_|surname'] = "%s_%s@%s" % ( given_name_first_letter, surname, domain) possible_emails['given_name|.|surname0'] = "%s.%s@%s" % ( given_name, surname_first_letter, domain) possible_emails['given_name|surname0'] = "%s%s@%s" % ( given_name, surname_first_letter, domain) possible_emails['given_name|-|surname0'] = "%s-%s@%s" % ( given_name, surname_first_letter, domain) possible_emails['given_name|_|surname0'] = "%s_%s@%s" % ( given_name, surname_first_letter, domain) possible_emails['surname|.|given_name0'] = "%s.%s@%s" % ( surname, given_name_first_letter, domain) possible_emails['|surname|given_name0'] = "%s%s@%s" % ( surname, given_name_first_letter, domain) possible_emails['surname|-|given_name0'] = "%s-%s@%s" % ( surname, given_name_first_letter, domain) possible_emails['surname|_|given_name0'] = "%s_%s@%s" % ( surname, given_name_first_letter, domain) possible_emails['surname0|given_name0'] = "%s%s@%s" % ( surname_first_letter, given_name_first_letter, domain) possible_emails['given_name0|surname0'] = "%s%s@%s" % ( given_name_first_letter, surname_first_letter, domain) possible_emails['surname'] = "%s@%s" % (surname, domain) possible_emails['given_name'] = "%s@%s" % (given_name, domain) for possible_pattern, possible_email in possible_emails.items(): if possible_email == email: pattern = possible_pattern return {'pattern': pattern, 'email': possible_email} domain_split = email.split('@') if len(domain_split): email_domain = domain_split[0] if surname and given_name and surname in email_domain and given_name in email_domain: return {'pattern': '_surname_given_name_', 'email': email} return None