Почему электронная почта больше?
Потому что данные кодируются, в base64
котором кодируются группы до трех байтов в виде групп из четырех печатных символов ASCII. Как правило, эти группы печатных символов затем разбиваются на строки.
В результате кодированные данные чуть более чем в 1⅓ раз превышают размер исходных данных.
Почему используется base64?
Электронная почта имеет долгую историю и изначально была предназначена для переноса текста. Только байтовые значения, представляющие печатаемые символы ASCII, могут надежно проходить через множество систем электронной почты на планете.
Таким образом, MIME разделил две схемы для кодирования других данных в виде текста ASCII - «цитируемый для печати», предназначенный в основном для текста ASCII с несколькими другими битами, и «BASE64» для произвольных двоичных данных.
Существуют расширения протокола SMTP, чтобы попытаться снять эти ограничения. Во-первых, 8BITMIME в 1994 году, который допускал более высокие значения октетов, но, к сожалению, не снимал ограничений, связанных с длинами строк и окончаниями строк, поэтому не подходил для произвольных двоичных данных; а затем BINARYMIME в 1995 году, что позволило передавать сообщения, содержащие произвольные двоичные данные.
Однако эти стандарты не получили широкого распространения. Одна проблема в том, что произойдет, если один прыжок в почтовой цепочке их поддерживает, а следующий - нет? Почтовый сервер не может отправлять почту как есть, он должен либо отклонить ее как недоставленную и отклонить ее (что вряд ли будет приемлемо для пользователей), либо преобразовать ее (что требует значительного дополнительного кода на почтовом сервере), Преобразование сделано особенно болезненным по правилам MIME, которые касаются неиспользования кодировок передачи контента в многокомпонентных типах.