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,