En attachant des données à mes courriels, j'ai remarqué que Thunderbird calculait la taille totale de l'email résultant beaucoup plus volumineuse que les fichiers que j'avais joints.
Voici un exemple récent: deux images, une de 13 Mo et une de 3,6 Mo, devraient représenter environ 17 Mo au total. Il y avait quatre lignes de texte. Thunderbird m'a alors demandé si je voulais vraiment envoyer un courrier électronique d'une taille totale de 22 Mo.
D'où vient cette différence? 5 Mo de texte sonne un peu trop.
email
thunderbird
base64
arc_lupus
la source
la source
Réponses:
Vos données étaient de 17 Mio. Il y a 1024 Ko dans un MiB. Il y a 1024 B dans un KiB. Il y a 8 bits dans un octet. Cela représente donc 142 606 336 bits.
L'encodage en base 64 encode tous les six bits sous la forme d'un octet séparé. Il nous faut donc environ 23 767 722 octets. Diviser par 1024 à deux reprises nous rapporte 22,67 Mio. Donc, c'est de là que vient le MiB.
Le courrier électronique est une technologie assez ancienne et ne suppose pas un tuyau propre 8 bits.
la source
Pourquoi l'email est-il plus gros?
Parce que les données sont codées dans
base64
lesquelles codent des groupes de trois octets maximum sous forme de groupes de quatre caractères ASCII imprimables. Généralement, ces groupes de caractères imprimables sont ensuite divisés en lignes.Le résultat est que les données encodées sont à peine plus de 1 fois la taille des données d'origine.
Pourquoi base64 est-il utilisé?
Le courrier électronique a une longue histoire et a été conçu à l'origine pour transporter du texte. Seules les valeurs en octets représentant les caractères imprimables ASCII peuvent passer de manière fiable dans la grande variété de systèmes de messagerie de la planète.
Donc, MIME a divisé deux schémas pour coder d'autres données en tant que texte ASCII - "quoted-printable" (Imprimé entre guillemets) conçu principalement pour du texte ASCII avec quelques autres bits et "BASE64" pour des données binaires arbitraires.
Il existe des extensions du protocole SMTP pour essayer de supprimer ces restrictions. Premièrement, 8BITMIME en 1994, qui permettait des valeurs d’octets plus élevées mais ne supprimait malheureusement pas les limites relatives aux longueurs et aux fins de ligne, ne convenait donc pas aux données binaires arbitraires; puis BINARYMIME en 1995, qui permettait le transfert de messages contenant des données binaires arbitraires.
Cependant, ces normes n’ont pas été largement adoptées. Un problème est que se passe-t-il si un saut dans la chaîne de courrier les prend en charge mais que le saut suivant ne le fait pas? Le serveur de messagerie ne peut alors pas envoyer le courrier tel quel, il doit soit le rejeter comme non distribuable et le renvoyer (ce qui est peu probable pour les utilisateurs), soit le convertir (ce qui nécessite un code supplémentaire important dans le serveur de messagerie). . La conversion est rendue particulièrement pénible par les règles MIME relatives à la non-utilisation des codages de transfert de contenu sur les types à plusieurs parties.
la source