¿Las direcciones de correo electrónico distinguen entre mayúsculas y minúsculas?
[email protected]
Leí que, de manera estándar, la primera parte del correo electrónico distingue entre mayúsculas y minúsculas , sin embargo, intenté enviar un correo electrónico a [email protected]
y [email protected]
llegó en cada caso.
¿Cómo manejan los servidores de correo los nombres de usuario? ¿Es posible perder el caso y ese mensaje no se entregará? ¿Es realmente muy importante utilizar exactamente la misma letra que se escribió al registrarse al dar su dirección de correo electrónico?
Del RFC 5321, sección 2.3.11 :
La convención de nomenclatura estándar para buzones de correo se define como "parte-local@dominio"; El uso contemporáneo permite un conjunto de aplicaciones mucho más amplio que los simples "nombres de usuario". En consecuencia, y debido a una larga historia de problemas cuando los hosts intermedios han intentado optimizar el transporte modificándolos, la parte local DEBE ser interpretada y asignada semántica sólo por el host especificado en la parte de dominio de la dirección.
Entonces sí, la parte antes de "@" podría distinguir entre mayúsculas y minúsculas, ya que está completamente bajo el control del sistema host. Sin embargo, en la práctica ningún sistema de correo ampliamente utilizado distingue diferentes direcciones según el caso.
Sin embargo, la parte después del signo @ es el dominio y, de acuerdo con RFC 1035 , sección 3.1,
"Los servidores de nombres y los solucionadores deben comparar [dominios] sin distinguir entre mayúsculas y minúsculas"
En resumen, es seguro tratar las direcciones de correo electrónico sin distinguir entre mayúsculas y minúsculas.
Sé que esta es una vieja pregunta, pero solo quiero comentar aquí: en cualquier medida, las direcciones de correo electrónico distinguen entre mayúsculas y minúsculas, la mayoría de los usuarios serían "muy imprudentes" al utilizar activamente una dirección de correo electrónico que requiera mayúsculas. Pronto dejarían de usar la dirección porque perderían gran parte de su correo. (A menos que tengan una razón específica para dificultar las cosas y esperen correo solo de remitentes específicos que conocen).
Esto se debe a que existen humanos imperfectos y software imperfecto (¡sorpresa!), lo que asumirá que todos los correos electrónicos están en minúsculas y, por esta razón, estos humanos y software enviarán mensajes utilizando una "versión en minúsculas" de la dirección, independientemente de cómo se haya proporcionado. a ellos. Si el destinatario no puede recibir dichos mensajes, no pasará mucho tiempo antes de que se dé cuenta de que se están perdiendo muchos y cambie a una dirección de correo electrónico solo en minúsculas o configure su servidor para que no distinga entre mayúsculas y minúsculas.
Llegué tarde a esta publicación, pero tengo algo ligeramente diferente que decir...
>> "Are email addresses case sensitive?"
Bueno, "Depende..." (TM)
Algunas organizaciones realmente piensan que es una buena idea y sus servidores de correo electrónico aplican 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 nuestros sistemas utilicen correos electrónicos que no distingan entre mayúsculas y minúsculas.
Mientras que el principio de robustez sugiere que aceptemos correos electrónicos que distingan entre mayúsculas y minúsculas.
Solución:
- Almacenar correos electrónicos con distinción entre mayúsculas y minúsculas
- Enviar correos electrónicos distinguiendo entre mayúsculas y minúsculas
- Realizar búsquedas internas sin distinguir entre mayúsculas y minúsculas
Esto significaría que si este correo electrónico ya existe: [email protected]
... y llega 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 el mensaje de error "Ese correo electrónico ya existe".
Ahora tiene que tomar una decisión: ¿esa solución es adecuada en su caso?
De lo contrario, podría cobrar una tarifa de conveniencia a aquellos clientes que exigen soporte para sus correos electrónicos que distinguen entre 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 verse 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 está imponiendo la distinción entre mayúsculas y minúsculas, pero permitiendo a los clientes pagar por este soporte si utilizan sistemas de correo electrónico que admitan tales tonterías.
ps ILIKE es una palabra clave de PostgreSQL: http://www.postgresql.org/docs/9.2/static/functions-matching.html
Estándares abiertos IETF RFC 5321 2.4. Principios generales de sintaxis y modelo de transacción
Las implementaciones SMTP DEBEN tener cuidado de preservar el caso de las partes locales del buzón. En particular, para algunos hosts, el usuario "smith" es diferente del usuario "Smith".
Los dominios de buzón siguen las reglas DNS normales y, por lo tanto, no distinguen entre mayúsculas y minúsculas.