Вопрос: Почему размер моего письма примерно на треть больше размера прикрепленных файлов?


При прикреплении данных к своим электронным письмам я заметил, что Thunderbird вычисляет общий размер получающейся электронной почты как можно больше, чем файлы, которые я прикреплял.

Вот недавний пример: два изображения, один на 13 МБ и один на 3,6 МБ, должны составлять приблизительно 17 МБ. Было четыре строки текста. Затем Thunderbird спросил меня, действительно ли я хочу отправить электронное письмо с общим размером 22 МБ.

Откуда эта разница? 5 Мб текста звучит немного.


112
2017-10-26 20:45


Источник


Обратите внимание, что это часто затрагивает такие вещи, как максимальный размер. Если я не ошибаюсь, письмо Google обычно позволяет отправлять электронную почту не более 25 МБ, но 25 МБ вычисляются после кодирование, поэтому вы не можете отправить изображение 25 МБ с помощью электронной почты, потому что при кодировании оно будет слишком большим. - Bakuriu
Комментарий @ Bakuriu относится также к серверу Outlook + Exchange. Я предлагаю, чтобы основной вопрос был Почему почтовые клиенты (часто - Tbird лучше, чем внешний вид), сообщают только размер локального файла, когда это зависит от размера base64? - Chris H
@MarcksThomas Я не хочу спорить с призывом иметь один всеобъемлющий легко доступный для поиска источник знаний против того, чтобы все знания были легко доступны для поиска. Но нужно ли это? Я так не думаю. - Я не думаю, что этот вопрос совсем не полезен, я просто думаю, что он не отвечает основным требованиям, чтобы сайт не содержал лишних вопросов и затруднял поиск действительно важных вещей, которые не ответил в другом месте. Это то, что мы должны делать! - arc_lupus, поскольку я только скрываюсь на этом сайте, как правило, мой downvote не является cout. Но так оно и есть. - Alexander Kosubek
Относится к: superuser.com/questions/568506/... - glenneroo


Ответы:


Ваши данные были 17 MiB. В MiB есть 1024 KiB. Есть 1024 B в KiB. В байте 8 бит. Так что это 142 606 336 бит.

Кодирование Base 64 кодирует каждые шесть бит в виде отдельного байта. Поэтому нам нужно около 23 767 722 байт. Разделение на 1024 удваивает нам 22.67 MiB. Так вот откуда появился 22 MiB.

Электронная почта - довольно старая технология и не предполагает 8-битную чистую трубу.


214
2017-10-26 20:49



Чтобы немного расшифровать эту последнюю строку: base-64 - это способ кодирования вложений как текста с использованием ограниченного набора «гарантированных безопасных символов», которые не будут искажены каким-либо промежуточным оборудованием, таким как a-z, A-Z, 0-9 - Yorik
И как только вы поймете математику в превосходном ответе Дэвида, вы можете просто увеличить размер вложений на 4/3, чтобы получить размер отправляемого почтового сообщения (плюс фактический текст). - Kent
Даже если электронная почта знает, что у нее есть полный 8-битный канал, необходимо будет кодировать, поскольку это принципиально текстовый поток - некоторые символы служат для функций управления и, следовательно, не должны возникать в ваших данных. При этом существуют лучшие методы кодирования, но они не были приняты. - Loren Pechtel
@LorenPechtel вы можете с радостью иметь часть приложения / октета-потока в сообщении MIME. Все, что вам нужно сделать, это выбрать границу, которая не встречается в данных. - OrangeDog
какой base64 на самом деле делает, использует 4 байта для каждых 3 оригинальных байтов. Хотя это звучит похоже, это важно, потому что длина всегда кратная 4, а также потому, что нет никакой причины для уровня бит. - njzk2


Почему электронная почта больше?

Поскольку данные кодируются в base64 который кодирует группы до трех байтов как группы из четырех печатных символов ASCII. Обычно эти группы печатаемых символов разбиваются на строки.

В результате кодированные данные превышают размер исходных данных более чем в 1 раз.

Почему используется base64?

Электронная почта имеет долгую историю и первоначально была предназначена для переноса текста. Только байтовые значения, представляющие символы, печатаемые ASCII, могут достоверно пройти через большое количество систем электронной почты на планете.

Таким образом, MIME разделил две схемы для кодирования других данных как текст ASCII. «quoted-printable», разработанный для большей части текста ascii с несколькими другими битами и «BASE64» для двоичных двоичных данных.

В SMTP-протоколе были добавлены расширения для устранения этих ограничений. Первый 8BITMIME в 1994 году, который допускал более высокие значения октета, но, к сожалению, не удалял ограничений, связанных с линейными латами и окончаниями строк, поэтому не был подходящим для двоичных двоичных данных, а затем BINARYMIME в 1995 году, что позволило передавать сообщения, содержащие двоичные двоичные данные.

Однако эти стандарты не получили широкого распространения. Одна из проблем - это то, что происходит, если один хоп в почтовой цепочке поддерживает их, но следующий переход нет. После этого почтовый сервер не может отправлять почту в as-is, он должен либо отклонить его как недопустимый, либо отскочить (что вряд ли будет приемлемым для пользователей) или преобразовать его (что требует значительного дополнительного кода в почтовом сервере). В MIME-правилах конверсия особенно болезненна в отношении использования кодировок передачи контента для многостраничных типов.


50
2017-10-28 02:59



Интересно, почему yEnc, с другой стороны, был довольно успешным в Usenet при вытеснении UUE. Возможно, потому что бинарные группы новостей оказывали гораздо более сильное давление на интернет-провайдеров, чем на случайные бинарные письма? - igorsk
@igorsk: plus Usenet / NN была представлена ​​и понята как потеря, где вы могли бы опубликовать статью, и не все подписчики на всех серверах обязательно ее получили. Были (и в основном остаются) обычаи о цитировании в достаточном количестве из предыдущей статьи (статей) о том, что ваше наблюдение может быть понято кем-то которые не получили предыдущую статью (ы), В отличие от большинства (небелких) отправителей электронной почты ожидалось, что «система» получит свое сообщение названному получателю (-ам), хотя иногда и через часы или дни; сегодня люди жалуются на даже короткие задержки. - dave_thompson_085