Warum ist die Größe meiner E-Mail etwa ein Drittel größer als die Größe der angehängten Dateien?


111

Beim Anhängen von Daten an meine E-Mails ist mir aufgefallen, dass Thunderbird die Gesamtgröße der resultierenden E-Mail als viel größer als die von mir angehängten Dateien berechnet.

Hier ist ein aktuelles Beispiel: Zwei Bilder, eines mit 13 MB und eines mit 3,6 MB, sollten insgesamt ungefähr 17 MB groß sein. Es gab vier Textzeilen. Thunderbird fragte mich dann, ob ich wirklich eine E-Mail mit einer Gesamtgröße von 22 MB senden wollte.

Woher kommt dieser Unterschied? 5 MB Text klingen nach ein bisschen viel.


2
Beachten Sie, dass dies häufig Dinge wie die maximale Größe betrifft. Wenn ich mich nicht irre, lässt Google Mail normalerweise E-Mails mit höchstens 25 MB zu, aber die 25 MB werden nach dem Codieren berechnet , sodass Sie kein 25-MB-Bild mit einer E-Mail senden können, da es beim Codieren tatsächlich zu groß wäre.
Bakuriu

4
@ Bakurius Kommentar gilt auch für Outlook + Exchange Server. Ich schlage vor, dass die zugrunde liegende Frage lautet: Warum geben E-Mail-Clients (oft - Tbird scheint besser als Outlook) nur die lokale Dateigröße an, wenn es auf die Base64-codierte Größe ankommt?
Chris H

@MarcksThomas Ich möchte nicht gegen den Reiz argumentieren, eine umfassende, leicht durchsuchbare Wissensquelle zu haben, statt nur alles Wissen leicht durchsuchbar zu haben. Aber ist es notwendig? Ich glaube nicht. - Ich denke nicht, dass die Frage überhaupt nicht nützlich ist, ich denke nur, dass sie nicht die Grundvoraussetzungen erfüllt, um die Website frei von unnötigen Fragen zu halten, und es schwieriger macht, das wirklich wichtige Material zu finden, was nicht der Fall ist irgendwo anders beantwortet. Das sollten wir tun! - arc_lupus, da ich nur auf dieser Seite lauere, ist meine Downvote noch nicht abgeschlossen. Aber wie es ist, steht es.
Alexander Kosubek

Antworten:


214

Ihre Daten waren 17 MiB. Es gibt 1024 KiB in einer MiB. Es gibt 1024 B in einem KiB. Ein Byte enthält 8 Bits. Das sind also 142.606.336 Bits.

Die Base 64-Codierung codiert alle sechs Bits als separates Byte. Wir brauchen also ungefähr 23.767.722 Bytes. Durch zweimaliges Teilen durch 1024 erhalten wir 22,67 MiB. Daher kommen die 22 MiB.

E-Mail ist eine ziemlich alte Technologie und setzt keine saubere 8-Bit-Pipe voraus.


79
Um die letzte Zeile ein wenig zu entschlüsseln: base-64 ist eine Möglichkeit, Anhänge als Text mit einem begrenzten Satz von "garantierten sicheren Zeichen" zu verschlüsseln, die von einigen zwischengeschalteten Geräten wie az, AZ, 0-9
Yorik

64
Und wenn Sie die Mathematik in Davids hervorragender Antwort verstanden haben, können Sie die Größe der Anhänge einfach mit 4/3 multiplizieren, um die Größe der zu sendenden E-Mail-Nachricht (zuzüglich des tatsächlichen Textes) zu erhalten.
Kent

12
Selbst wenn E-Mails wüssten, dass sie eine vollständige 8-Bit-Pipe haben, müssten sie verschlüsselt werden, da es sich im Grunde genommen um einen Textstrom handelt. Einige Zeichen dienen Kontrollfunktionen und dürfen daher nicht in Ihren Daten vorkommen. Davon abgesehen gibt es bessere Codierungstechniken, die jedoch nicht übernommen wurden.
Loren Pechtel

3
@LorenPechtel Sie können gerne einen Application / Octet-Stream-Teil in einer MIME-Nachricht haben. Sie müssen lediglich eine Grenze auswählen, die in den Daten nicht vorkommt.
OrangeDog

8
Was Base64 tatsächlich tut, ist die Verwendung von 4 Bytes für jeweils 3 Originalbytes. Während dies ähnlich klingt, ist es wichtig, weil die Länge immer ein Vielfaches von 4 ist und auch, weil es keinen Grund für die Bit-Ebene gibt.
njzk2

50

Warum ist die E-Mail größer?

Weil die Daten verschlüsselt sind, in base64denen Gruppen von bis zu drei Bytes als Gruppen von vier druckbaren ASCII-Zeichen verschlüsselt sind . In der Regel werden diese Gruppen druckbarer Zeichen dann in Zeilen aufgeteilt.

Das Ergebnis ist, dass die codierten Daten etwas mehr als das 1⅓-fache der Größe der Originaldaten betragen.

Warum wird base64 verwendet?

E-Mail hat eine lange Geschichte und wurde ursprünglich für die Übertragung von Text entwickelt. Nur Bytewerte, die ASCII-druckbare Zeichen darstellen, können zuverlässig durch die Vielzahl von E-Mail-Systemen auf dem Planeten geleitet werden.

Deshalb hat MIME zwei Schemata zum Codieren anderer Daten als ASCII-Text unterteilt: "quoted-printable" für hauptsächlich ASCII-Text mit einigen anderen Bits und "BASE64" für beliebige Binärdaten.

Es wurden Erweiterungen des SMTP-Protokolls vorgenommen, um diese Einschränkungen zu beseitigen. Erstens war 8BITMIME im Jahr 1994, das höhere Oktettwerte erlaubte, jedoch leider keine Beschränkungen in Bezug auf Zeilenlängen und Zeilenenden aufhob, nicht für beliebige Binärdaten geeignet. und dann BINARYMIME im Jahr 1995, das die Übertragung von Nachrichten mit beliebigen Binärdaten ermöglichte.

Diese Standards fanden jedoch keine breite Anwendung. Ein Problem ist, was passiert, wenn ein Hop in der Mailkette sie unterstützt, der nächste Hop jedoch nicht? Der Mail-Server kann die E-Mail dann nicht wie besehen senden. Entweder muss er sie als unzustellbar ablehnen und bouncen (was für Benutzer wahrscheinlich nicht akzeptabel ist) oder konvertieren (was einen erheblichen zusätzlichen Code auf dem Mail-Server erfordert). . Die Konvertierung wird durch MIME-Regeln besonders schmerzhaft, da bei mehrteiligen Typen keine Inhaltsübertragungscodierungen verwendet werden.


1
Ich frage mich, warum yEnc es im Usenet ziemlich erfolgreich geschafft hat, UUE zu verdrängen. Möglicherweise, weil binäre Newsgroups ISPs viel stärker unter Druck setzen als gelegentliche binäre E-Mails?
Igorsk

2
@igorsk: plus Usenet / NN wurde als verlustbehaftet dargestellt und verstanden, wo man einen Artikel veröffentlichen konnte und nicht alle Abonnenten auf allen Servern ihn unbedingt erhalten würden. Es gab (und gibt) Sitten und Gebräuche, in einem Follow-up "genug" der vorherigen Artikel zu zitieren, damit Ihre Follow-up von jemandem verstanden werden kann, der die vorherigen Artikel nicht erhalten hat . Im Gegensatz dazu erwarteten die meisten (Nicht-Spammer-) E-Mail-Absender, dass das System ihre Nachricht an die genannten Empfänger sendet, obwohl dies manchmal nach Stunden oder Tagen der Fall ist. Heute klagen die Leute sogar über kurze Verspätungen.
Dave_thompson_085
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.