2009-08-19 14 views
67

Reconozco que una dirección de correo electrónico puede ser indefinidamente larga, por lo que cualquier tamaño que imponga en mi campo de dirección de correo varchar será arbitrario. Sin embargo, me preguntaba qué es el "estándar". ¿Cuánto tiempo lo hacen ustedes? (Misma pregunta para el campo Nombre ...)¿Cuánto tiempo deberían ser los campos de correo electrónico SQL?

actualización: Al parecer, la longitud máxima de una dirección de correo electrónico es 320 (= 64 < nombre de la pieza, < = 255 dominio). ¿Usas esto?

+1

Lo RFC ¿Estás usando esos valores? – IDisposable

+7

http: // stackoverflow.com/questions/386294/maximum-length-of-a-valid-email-id – Mala

Respuesta

128

El límite teórico es realmente largo, pero ¿realmente necesita preocuparse por estas largas direcciones de correo electrónico? Si alguien no puede iniciar sesión con un correo electrónico de 100 caracteres, ¿realmente le importa? Nosotros realmente preferimos que ellos no puedan.

Algunos datos estadísticos pueden arrojar algo de luz sobre el tema. Analizamos una base de datos con más de 10 millones de direcciones de correo electrónico. Estas direcciones no están confirmadas, por lo que no son válidas. He aquí algunos hechos interesantes,

  1. El más largo es válida 89.
  2. Los hay cientos más largos, hasta el límite de nuestra columna (255), pero son aparentemente falsa mediante inspección visual.
  3. El pico de la distribución de longitud está en 19.
  4. No hay cola larga. Todo se cae bruscamente después de 38.

Limpiamos el DB tirando cualquier cosa más de 40. La buena noticia es que nadie se ha quejado, pero la mala noticia es que no se borraron muchos registros.

+23

Gracias a Dios por el sentido común?. Todos dicen "¡que sea 320!" por favor, * por favor * escriba una dirección de correo electrónico de 320 caracteres, examínela detenidamente y pregúntese si alguien en la tierra alguna vez usaría esa dirección en su aplicación. – MGOwen

+8

40? Supongo que estás en un club de desarrolladores que odian oficialmente los correos electrónicos proxy de Facebook (a.k.a - [email protected]ymail.facebook.com). De hecho, predico tamaño de 90 ... curiosamente, va bien con el número 1 en su lista. – kape123

+1

Depende de para qué se usa el correo electrónico. Si es para usuarios, estoy de acuerdo, 40, tal vez 50 es suficiente. Acabo de hacer una prueba y descubrí que la mayoría tiene entre 17 y 25. Muy raramente más de 40. –

15

En el pasado acabo de hacer 255 porque ese es el estándar tan arraigado de la entrada corta pero no demasiado corta. Eso, y soy una criatura de hábito.

Sin embargo, dado que el máximo es 319, yo haría nvarchar(320) en la columna. Tengo que recordar el @!

nvarchar no utilizará el espacio que no necesita, por lo que si solo tiene una dirección de correo electrónico de 20 caracteres, solo ocupará 20 bytes. Esto está en contraste con un nchar que siempre toma su máximo (ajusta el valor con espacios).

También usaría nvarchar en lugar de varchar ya que es Unicode. Dada la volatilidad de las direcciones de correo electrónico, este es definitivamente el camino a seguir.

+2

255 + 64 = 319, 320 está contando el @ – Havenard

+0

Estoy usando phpMyAdmin para configurar las bases de datos, y no veo nvarchar en cualquier lugar ... ¿tengo que configurarlo manualmente con una declaración SQL, o simplemente me falta algo? – Mala

+5

thisemailaddressisonly160charslong-[email protected]butuserswithnoemailaddressunder100charswillNEVERbeanissue.com – MGOwen

4

Si realmente estás siendo colérico, haz un nombre de usuario varchar (60), varchar de dominio (255). Entonces puede hacer estadísticas ridículas sobre el uso del dominio que es un poco más rápido que hacerlo en un solo campo. Si se siente realmente optimista sobre la optimización, eso también hará que su servidor SMTP pueda enviar correos electrónicos con menos conexiones/mejor procesamiento por lotes.

+0

s/pistola-ho/entusiasta/ – jameshfisher

+4

s/Gung-ho? (?: \ S * acerca)/dedicada a/ –

0

Para el correo electrónico, independientemente de la especificación, casi siempre voy con 512 (nvarchar). Los nombres y apellidos son similares.

Realmente, necesita ver cuánto le preocupa tener un poco de información adicional. Para mí, principalmente, no es una preocupación, así que me equivocaré por el lado conservador. Pero si ha decidido, a través de medios lógicos y precisos, que deberá ahorrar espacio, hágalo. Pero, en general, sea conservador con los tamaños de campo, y la vida será buena.

Tenga en cuenta que probablemente no todos los clientes de correo electrónico admitan el RFC, por lo que independientemente de lo que diga, puede encontrar diferentes cosas en la naturaleza.

5

la siguiente dirección de correo electrónico está a sólo 94 caracteres:

[email protected]ngCompanyNameOfSomeKind.com.au

haría que realmente use una dirección de correo electrónico así? ¿Sería alguien? Por supuesto que no. Demasiado tiempo para escribir y demasiado difícil de recordar.

Si el espacio en disco en su base de datos es un problema, y ​​no te importa si un usuario en un millón tiene que utilizar una dirección de correo electrónico secundaria para utilizar su sitio, ir a 50 caracteres: [email protected] com

(Por otra parte, la mayor parte del tiempo, el espacio en disco ya no es un problema, ¿o sí?)

3

RFC 5321 (la especificación actual del smtp, obsoletes RFC2821) establece:

4.5.3.1.1. Parte local

La longitud total máxima de un usuario nombre u otra parte local es 64
octetos.

4.5.3.1.2. Dominio

La longitud total máxima de un nombre de dominio es de 255 octetos.

Esto se refiere a solo localpart @ domain, para un total de 320 caracteres ASCII (7 bits).

Si va a normalizar sus datos, tal vez mediante el fraccionamiento de la parte local y de dominio en campos separados, las cosas adicionales a tener en cuenta:

  • Una técnica conocida como VERP puede resultar en localparts de larga duración de forma automática correo generado (puede no ser relevante para su caso de uso)
  • dominios no distinguen entre mayúsculas y minúsculas; recomendamos minicar la parte de dominio
  • las partes locales distinguen entre mayúsculas y minúsculas; [email protected] y [email protected] son direcciones técnicamente diferentes según las especificaciones, aunque la política en el dominio.com puede tratar las dos direcciones como equivalentes. Lo mejor es restringir el plegado de casos de parte local a dominios que se sabe que lo hacen.
1

utilizo varchar (64) No creo que alguien pudiera tener correo electrónico ya

Cuestiones relacionadas