Dołączając dane do moich wiadomości e-mail, zauważyłem, że Thunderbird oblicza całkowity rozmiar powstałej wiadomości e-mail jako znacznie większy niż pliki, które załączyłem.
Oto ostatni przykład: dwa obrazy, jeden o wielkości 13 MB i jeden o wielkości 3,6 MB, powinny w sumie mieć około 17 MB. Były cztery linie tekstu. Następnie Thunderbird zapytał mnie, czy naprawdę chcę wysłać wiadomość e-mail o łącznej wielkości 22 MB.
Skąd ta różnica? 5 MB tekstu brzmi trochę dużo.
email
thunderbird
base64
arc_lupus
źródło
źródło
Odpowiedzi:
Twoje dane wyniosły 17 MiB. W MiB jest 1024 KiB. KiB ma 1024 B. Bajt zawiera 8 bitów. Więc to 142 606 336 bitów.
Kodowanie Base 64 koduje co sześć bitów jako osobny bajt. Potrzebujemy więc około 23 767 722 bajtów. Dwukrotne podzielenie przez 1024 daje nam 22,67 MiB. Stąd pochodzi 22 MiB.
E-mail jest dość starą technologią i nie zakłada 8-bitowej czystej rury.
źródło
Dlaczego e-mail jest większy?
Ponieważ dane są zakodowane, w
base64
którym kodują grupy do trzech bajtów jako grupy czterech drukowalnych znaków ASCII. Zazwyczaj te grupy znaków do wydruku są następnie dzielone na linie.W rezultacie zakodowane dane są nieco ponad 1,5 razy większe niż oryginalne dane.
Dlaczego używany jest base64?
Wiadomość e-mail ma długą historię i pierwotnie została zaprojektowana do przenoszenia tekstu. Tylko wartości bajtów reprezentujące znaki drukowalne ASCII mogą niezawodnie przejść przez wiele różnych systemów poczty elektronicznej na świecie.
Tak więc MIME podzielił dwa schematy kodowania innych danych jako tekst ASCII - „cytowany do wydruku” przeznaczony głównie dla tekstu ASCII z kilkoma innymi bitami oraz „BASE64” dla dowolnych danych binarnych.
Istnieją rozszerzenia protokołu SMTP, aby spróbować usunąć te ograniczenia. Po pierwsze, 8BITMIME w 1994 r., Który pozwalał na wyższe wartości oktetów, ale niestety nie usunął limitów związanych z długością linii i zakończeniami linii, więc nie był odpowiedni dla dowolnych danych binarnych; a następnie BINARYMIME w 1995 r., co pozwoliło na przesyłanie wiadomości zawierających dowolne dane binarne.
Jednak standardy te nie spotkały się z powszechnym przyjęciem. Jednym problemem jest to, co się stanie, jeśli jeden skok w łańcuchu poczty obsługuje je, ale następny skok nie? Serwer pocztowy nie może wtedy wysyłać wiadomości w stanie, w jakim się znajduje, musi albo odrzucić ją jako niemożliwą do dostarczenia i odesłać (co raczej nie będzie akceptowalne dla użytkowników), albo przekonwertować (co wymaga znacznego dodatkowego kodu na serwerze pocztowym) . Konwersja jest szczególnie bolesna z powodu reguł MIME dotyczących niestosowania kodowań przesyłania treści w typach wieloczęściowych.
źródło