Perché la dimensione della mia e-mail è circa un terzo più grande della dimensione dei suoi file allegati?


111

Quando allego dati alle mie e-mail, ho notato che Thunderbird calcola la dimensione totale dell'email risultante molto più grande dei file che allego.

Ecco un esempio recente: due immagini, una a 13 MB e una a 3,6 MB, dovrebbero essere complessivamente circa 17 MB. C'erano quattro righe di testo. Thunderbird mi ha quindi chiesto se volevo davvero inviare un'e-mail con una dimensione totale di 22 MB.

Da dove viene quella differenza? 5 MB di testo sembrano un po 'troppo.


2
Si noti che ciò influisce spesso su elementi come la dimensione massima. Se non sbaglio, la posta di Google in genere consente e-mail di massimo 25 MB, ma i 25 MB vengono calcolati dopo la codifica, quindi non è possibile inviare un'immagine da 25 MB con un'e-mail, perché quando codificata sarebbe effettivamente troppo grande.
Bakuriu,

4
Il commento di @ Bakuriu si applica anche al server Outlook + Exchange. Suggerisco che la domanda sottostante sia in realtà Perché i client di posta (spesso - Tbird sembra meglio di Outlook) riportano solo le dimensioni del file locale quando sono le dimensioni con codifica base64 che contano?
Chris H,

@MarcksThomas Non voglio discutere contro l'appello di avere una fonte di conoscenza comprensiva e facilmente ricercabile, contro la semplice ricerca di tutte le conoscenze. Ma è necessario? Io non la penso così. - Non penso che la domanda non sia affatto utile, penso solo che non soddisfi i requisiti di base per mantenere il sito libero da domande inutili e rende più difficile trovare le cose davvero importanti, che non è rispose altrove. Questo è quello che dovremmo fare! - arc_lupus, dato che in agguato su questo sito, di solito, il mio downvote non è ancora finito. Ma com'è, lo è.
Alexander Kosubek,

Risposte:


214

I tuoi dati erano 17 MiB. Ci sono 1024 KiB in un MiB. Ci sono 1024 B in un KiB. Ci sono 8 bit in un byte. Quindi sono 142.606.336 bit.

La codifica Base 64 codifica ogni sei bit come byte separato. Quindi abbiamo bisogno di circa 23.767.722 byte. Dividendo per 1024 due volte ci guadagna 22,67 MiB. Ecco da dove viene il 22 MiB.

L'email è una tecnologia piuttosto vecchia e non presuppone una pipe pulita a 8 bit.


79
Per decodificare un po 'l'ultima riga: base-64 è un modo per codificare gli allegati come testo usando un set limitato di "caratteri sicuri garantiti" che non sarebbero confusi da alcune apparecchiature intermedie, come az, AZ, 0-9
Yorik,

64
E, una volta che hai capito la matematica nella risposta eccellente di David, puoi semplicemente moltiplicare la dimensione degli allegati per 4/3 per ottenere la dimensione del messaggio di posta che verrà inviato (più il testo effettivo).
Kent,

12
Anche se l'email sapesse che ha una pipe a 8 bit completa, dovrebbe esserci la codifica in quanto è fondamentalmente un flusso di testo - alcuni caratteri servono funzioni di controllo e quindi non devono verificarsi nei dati. Detto questo, ci sono tecniche di codifica migliori ma non sono state adottate.
Loren Pechtel,

3
@LorenPechtel puoi avere felicemente una parte application / octet-stream in un messaggio MIME. Tutto quello che devi fare è scegliere un limite che non si verifica nei dati.
OrangeDog,

8
quello che effettivamente fa base64 è usare 4 byte per ogni 3 byte originali. Sebbene ciò sembri simile, è importante perché la lunghezza è sempre un multiplo di 4 e anche perché non vi è motivo per il livello di bit.
njzk2,

50

Perché l'e-mail è più grande?

Perché i dati sono codificati in base64cui codifica gruppi di un massimo di tre byte come gruppi di quattro caratteri ASCII stampabili. In genere, questi gruppi di caratteri stampabili vengono quindi suddivisi in linee.

Il risultato è che i dati codificati sono poco più di 1 volta volte più grandi dei dati originali.

Perché viene utilizzato Base64?

L'email ha una lunga storia ed è stata originariamente progettata per contenere testo. Solo i valori di byte che rappresentano caratteri stampabili ASCII possono passare in modo affidabile attraverso l'ampia varietà di sistemi di posta elettronica sul pianeta.

Quindi MIME ha diviso due schemi per codificare altri dati come testo ASCII - "quoted-stampabile" progettato per il testo prevalentemente ASCII con pochi altri bit e "BASE64" per dati binari arbitrari.

Esistono estensioni del protocollo SMTP per provare a rimuovere queste restrizioni. Innanzitutto, 8BITMIME nel 1994, che consentiva valori di ottetto più elevati ma sfortunatamente non rimuoveva i limiti relativi alla lunghezza e alla fine della linea, quindi non era adatto a dati binari arbitrari; e poi BINARYMIME nel 1995, che ha consentito il trasferimento di messaggi contenenti dati binari arbitrari.

Tuttavia, questi standard non hanno visto l'adozione diffusa. Un problema è, cosa succede se un hop nella catena di posta li supporta ma il hop successivo no? Il server di posta quindi non può inviare la posta così com'è, deve respingerla come non consegnabile e farla rimbalzare (che è improbabile che sia accettabile per gli utenti) o convertirla (che richiede un codice aggiuntivo significativo nel server di posta) . La conversione è resa particolarmente dolorosa dalle regole MIME relative al non utilizzo delle codifiche di trasferimento del contenuto su tipi multipart.


1
Mi chiedo perché yEnc, d'altra parte, abbia avuto abbastanza successo in Usenet nel sostituire UUE. Forse perché i newsgroup binari esercitano una pressione molto maggiore sugli ISP rispetto a un'e-mail binaria occasionale?
igorsk,

2
@igorsk: più Usenet / NN è stato presentato e inteso come perdita, in cui è possibile pubblicare un articolo e non tutti gli abbonati su tutti i server lo riceverebbero necessariamente. Vi erano (e rimangono in gran parte) abitudini riguardo alla citazione in un seguito "abbastanza" degli articoli precedenti che il vostro seguito può essere compreso da qualcuno che non ha ricevuto gli articoli precedenti . Al contrario, la maggior parte dei mittenti di posta elettronica (non spammer) si aspettava che "il sistema" potesse inviare il loro messaggio ai destinatari nominati, anche se a volte dopo ore o giorni; oggi le persone si lamentano anche di brevi ritardi.
dave_thompson_085
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.