Question Pourquoi la taille de mon email est-elle environ un tiers plus grande que la taille de ses fichiers joints?


Lors de la connexion de données à mes e-mails, j'ai remarqué que Thunderbird calcule la taille totale de l'e-mail résultant autant que les fichiers joints.

Voici un exemple récent: deux images, une à 13 Mo et une à 3,6 Mo, devraient totaliser environ 17 Mo. Il y avait quatre lignes de texte. Thunderbird m'a alors demandé si je voulais vraiment envoyer un email d'une taille totale de 22 Mo.

D'où vient cette différence? 5 Mo de texte sonne un peu.


112
2017-10-26 20:45


origine


Notez que cela affecte souvent des choses comme la taille maximale. Si je ne me trompe pas, Google mail autorise généralement un courrier électronique d'au plus 25 Mo, mais les 25 Mo sont calculés. après l'encodage, de sorte que vous ne pouvez pas envoyer une image de 25 Mo avec un courrier électronique, car une fois encodé, il serait réellement trop gros. - Bakuriu
Le commentaire de @ Bakuriu s'applique également au serveur Outlook + Exchange. Je suggère que la question sous-jacente est en fait Pourquoi les clients de messagerie (souvent - Tbird semble-t-il mieux que Outlook) rapportent uniquement la taille du fichier local quand il s'agit de la taille encodée en base64 qui compte? - Chris H
@MarcksThomas Je ne veux pas contester l’appel d’avoir une source de connaissances facilement consultable, tout compris, contre le simple fait de pouvoir rechercher facilement toutes les connaissances. Mais est-ce nécessaire? Je ne le pense pas. - Je ne pense pas que la question ne soit pas utile du tout, je pense juste qu’elle ne répond pas aux exigences de base pour garder le site exempt de questions inutiles et rend plus difficile la recherche de choses vraiment importantes, n'est pas répondu ailleurs. C'est ce que nous devrions faire! - arc_lupus, comme je ne me cache que sur ce site, en général, mon vote en aval n’a pas encore raison. Mais tel qu'il est, ça reste. - Alexander Kosubek
Relatif à: superuser.com/questions/568506/... - glenneroo


Réponses:


Vos données étaient de 17 Mio. Il y a 1024 KiB dans une MiB. Il y a 1024 B dans un KiB. Il y a 8 bits dans un octet. Donc, ce sont 142 606 336 bits.

Le codage Base 64 code tous les six bits sous la forme d'un octet distinct. Nous avons donc besoin d'environ 23 767 722 octets. Diviser par 1024 deux fois nous rapporte 22,67 Mio. Alors c'est de là que vient le 22 MiB.

L'email est une technologie assez ancienne et ne suppose pas un tuyau propre de 8 bits.


214
2017-10-26 20:49



Pour décoder cette dernière ligne: base-64 est un moyen d'encoder les pièces jointes sous forme de texte en utilisant un ensemble limité de "caractères sûrs garantis" qui ne seraient pas altérés par certains équipements intermédiaires, tels que a-z, A-Z, 0-9 - Yorik
Et, une fois que vous avez compris les maths de l'excellente réponse de David, vous pouvez simplement multiplier la taille des pièces jointes par 4/3 pour obtenir la taille du message qui sera envoyé (plus le texte réel). - Kent
Même si le courrier électronique savait qu'il avait un canal complet de 8 bits, il faudrait l'encoder car il s'agit fondamentalement d'un flux de texte - certains caractères servent de fonctions de contrôle et ne doivent donc pas apparaître dans vos données. Cela étant dit, il existe de meilleures techniques de codage, mais elles n’ont pas été adoptées. - Loren Pechtel
@ LorenPechtel vous pouvez heureusement avoir une partie application / octet-stream dans un message MIME. Il suffit de choisir une limite qui ne figure pas dans les données. - OrangeDog
quelle base64 réellement fait, utilise 4 octets pour 3 octets originaux. Bien que cela semble similaire, il est important car la longueur est toujours un multiple de 4, et aussi parce qu’il n’ya aucune raison au niveau du bit. - njzk2


Pourquoi l'e-mail est-il plus gros?

Parce que les données sont encodées dans base64 qui encode des groupes de trois octets maximum en tant que groupes de quatre caractères ASCII imprimables. Typiquement, ces groupes de caractères imprimables sont ensuite divisés en lignes.

Le résultat est que les données encodées sont juste un peu plus de 1⅓ fois la taille des données d'origine.

Pourquoi base64 est-il utilisé?

L'email a une longue histoire et a été conçu à l'origine pour transporter du texte. Seules les valeurs d'octets représentant des caractères imprimables en ASCII peuvent traverser de manière fiable la grande variété de systèmes de messagerie sur la planète.

Ainsi, MIME a divisé deux schémas pour encoder d'autres données en texte ASCII. "quoted-printable" conçu principalement pour le texte ascii avec quelques autres bits et "BASE64" pour les données binaires arbitraires.

Il y a eu des extensions au protocole SMTP pour essayer de supprimer ces restrictions. Le premier 8BITMIME en 1994, qui autorisait des valeurs d’octets plus élevées mais n’éliminait malheureusement pas les limites liées aux lignes et aux fins de ligne, ne convenait pas aux données binaires arbitraires et BINARYMIME en 1995

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 messagerie les prend en charge, mais pas le prochain bond. Le serveur de messagerie ne peut alors pas envoyer le courrier tel quel, il doit soit le rejeter comme non livrable et le renvoyer (ce qui risque de ne pas être acceptable pour les utilisateurs) ou 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 concernant l’absence d’utilisation des encodages de transfert de contenu sur des types multi-parties.


50
2017-10-28 02:59



Je me demande pourquoi yEnc, par contre, a eu beaucoup de succès à Usenet pour remplacer UUE. Peut-être parce que les groupes de discussion binaires exercent une pression beaucoup plus forte sur les FAI que sur les emails binaires occasionnels? - igorsk
@igorsk: plus Usenet / NN a été présenté et compris comme avec perte, où vous pouviez publier un article et tous les abonnés de tous les serveurs ne le recevraient pas nécessairement. Il y avait (et restait en grande partie) des coutumes à propos de la citation dans un suivi «suffisant» de l'article (s) précédent (s) que votre suivi puisse être compris par quelqu'un qui n'a pas reçu le ou les articles précédents. En revanche, la plupart des expéditeurs de courrier électronique (non-avertis) s'attendaient à ce que le système envoie leur message au (x) destinataire (s) nommé (s), bien que parfois après des heures ou des jours; Aujourd'hui, les gens se plaignent de délais même courts. - dave_thompson_085