diff --git a/mo/users.py b/mo/users.py index 0bbbb587ba07ef0a4b67e0160a331f54d08b4525..503276570d83c2962f82a7b67b8b28be1192d716 100644 --- a/mo/users.py +++ b/mo/users.py @@ -15,13 +15,17 @@ import mo.tokens def normalize_email(addr: str) -> str: if not re.fullmatch(r'.+@.+', addr): - raise mo.CheckError('Chybný formát mailové adresy') + raise mo.CheckError('V e-mailové adrese chybí zavináč') if re.search(r'[ \t]', addr): raise mo.CheckError('E-mailová adresa obsahuje mezeru') - if not re.fullmatch(r'[!-~]+', addr): - raise mo.CheckError('E-mailová adresa obsahuje znaky mimo ASCII') + m = re.search(r'[^!-~]+', addr) + if m: + if m[0].isprintable(): + raise mo.CheckError(f'E-mailová adresa obsahuje nepovolené znaky: {m[0]}') + else: + raise mo.CheckError('E-mailová adresa obsahuje netisknutelné znaky: '+repr(m[0])) try: # Tady úmyslně používáme knihovnu jen ke kontrole a ne k normalizaci,