Al adjuntar datos a mis correos electrónicos, noté que Thunderbird calcula el tamaño total del correo electrónico resultante mucho más grande que los archivos que adjunto.
Aquí hay un ejemplo reciente: dos imágenes, una de 13MB y otra de 3.6MB deberían tener en total aproximadamente 17MB. Había cuatro líneas de texto. Thunderbird luego me preguntó si realmente quería enviar un correo electrónico con un tamaño total de 22 MB.
¿De dónde viene esa diferencia? 5 MB de texto suena un poco demasiado.
email
thunderbird
base64
arc_lupus
fuente
fuente
Respuestas:
Sus datos fueron 17 MiB. Hay 1024 KiB en un MiB. Hay 1024 B en un KiB. Hay 8 bits en un byte. Entonces eso es 142,606,336 bits.
La codificación Base 64 codifica cada seis bits como un byte separado. Entonces necesitamos alrededor de 23,767,722 bytes. Dividir por 1024 dos veces nos da 22.67 MiB. De ahí viene el 22 MiB.
El correo electrónico es una tecnología bastante antigua y no asume una tubería limpia de 8 bits.
fuente
¿Por qué el correo electrónico es más grande?
Porque los datos están codificados en los
base64
que codifica grupos de hasta tres bytes como grupos de cuatro caracteres ASCII imprimibles. Por lo general, estos grupos de caracteres imprimibles se dividen en líneas.El resultado es que los datos codificados tienen poco más de 1⅓ veces el tamaño de los datos originales.
¿Por qué se usa base64?
El correo electrónico tiene una larga historia y fue diseñado originalmente para transportar texto. Solo los valores de bytes que representan caracteres imprimibles ASCII podrían pasar de manera confiable a través de la amplia variedad de sistemas de correo electrónico en el planeta.
Por lo tanto, MIME dividió dos esquemas para codificar otros datos como texto ASCII: "imprimido entre comillas", diseñado principalmente para texto ASCII con algunos otros bits, y "BASE64" para datos binarios arbitrarios.
Ha habido extensiones al protocolo SMTP para intentar eliminar estas restricciones. Primero, 8BITMIME en 1994, que permitía valores de octetos más altos, pero desafortunadamente no eliminaba los límites relacionados con las longitudes y terminaciones de línea, por lo que no era adecuado para datos binarios arbitrarios; y luego BINARYMIME en 1995, que permitió la transferencia de mensajes que contienen datos binarios arbitrarios.
Sin embargo, estos estándares no han tenido una adopción generalizada. Un problema es, ¿qué sucede si un salto en la cadena de correo los admite pero el siguiente salto no? El servidor de correo no puede enviar el correo tal cual, debe rechazarlo como no se puede entregar y rebotarlo (lo que es poco probable que sea aceptable para los usuarios) o convertirlo (lo que requiere un código adicional significativo en el servidor de correo) . La conversión se hace especialmente dolorosa por las reglas MIME con respecto a no usar codificaciones de transferencia de contenido en tipos multiparte.
fuente