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.