Saltar al contenido

smtp – ¿Las direcciones de correo electrónico distinguen entre mayúsculas y minúsculas?

septiembre 22, 2021
apple touch icon@2

Es muy tarde para esta publicación, pero tengo algo ligeramente diferente que decir …

>> "Are email addresses case sensitive?"

Bien, «Depende…» (TM)

Algunas organizaciones piensan que es una buena idea y sus servidores de correo electrónico imponen la distinción entre mayúsculas y minúsculas.

Entonces, para esos lugares locos, «Sí, los correos electrónicos distinguen entre mayúsculas y minúsculas».

Nota: El hecho de que una especificación diga que puede hacer algo no significa que sea una buena idea hacerlo.

El principio de KISS sugiere que nuestro los sistemas utilizan correos electrónicos que no distinguen entre mayúsculas y minúsculas.

Mientras que el principio de robustez sugiere que aceptamos correos electrónicos que distinguen entre mayúsculas y minúsculas.

Solución:

  • Almacene correos electrónicos con distinción entre mayúsculas y minúsculas
  • Envíe correos electrónicos con distinción entre mayúsculas y minúsculas
  • Realizar búsquedas internas sin distinción entre mayúsculas y minúsculas

Esto significaría que si este correo electrónico ya existe: [email protected]

… y aparece otro usuario y quiere utilizar este correo electrónico: [email protected]

… que nuestra lógica de búsqueda que no distingue entre mayúsculas y minúsculas devolvería un mensaje de error «Ese correo electrónico ya existe».

Ahora, tienes que tomar una decisión: ¿Esa solución es adecuada en su caso?

De lo contrario, puede cobrar una tarifa de conveniencia a aquellos clientes que exijan soporte para sus correos electrónicos sensibles a mayúsculas y minúsculas e implementar una lógica personalizada que permita que [email protected] ingrese a su sistema, incluso si [email protected] ya existe.

En cuyo caso, su lógica de búsqueda / validación de correo electrónico podría parecerse a algo como este pseudocódigo:

if (user.paidEmailFee) {
   // case sensitive email
   query = "select * from users where email LIKE ?"
} else {
   // case insensitive email
   query = "select * from users where email ILIKE ?"
}
 

De esta manera, en su mayoría se aplica la insensibilidad a mayúsculas y minúsculas, pero se permite que los clientes paguen por este soporte si utilizan sistemas de correo electrónico que admiten tales tonterías.

ps ILIKE es una palabra clave de PostgreSQL: http://www.postgresql.org/docs/9.2/static/functions-matching.html

close