Как раскодировать письмо? | ||||||
Электронная почта может передавать только текстовую информацию. Поэтому если нужно переслать файл, содержащий что-либо, кроме символов букв и цифр (файл базы данных, файл с графическим изображением, упакованный архив, исполняемый файл), его нужно перекодировать в текстовую форму. Для этого используются различные способы кодировки. Рассмотрим наиболее часто встречающиеся. Для каждой кодировки попытаемся ответить на вопросы:
|
||||||
Суть проблемы: | ||||||
Посмотреть на форуме. |
||||||
Принцип кодирования в UUENCODE и BASE64 | ||||||
При необходимости послать по электронной почте нетекстовый файл его сначала нужно преобразовать в закодированную форму, которая не запутала бы Ваш почтовый сервер или то программное обеспечение электронной почты, которое работает у получателя. Существуют несколько способов такого преобразования, наиболее известны из них два. Ранее использовался UUENCODE, теперь стандартом является BASE64. В большинстве случаев нужно пользоваться вторым способом, особенно если для передачи сообщение используется протокол MIME (Multipurpose Internet Mail Extensions). Однако, некоторые старые приложения электронной почты не понимают MIME или Base 64, поэтому здесь приведены оба способа. Основополагающая идея обоих методов состоит в преобразовании двоичных файлов в ASCII файл, который может быть нормально передан и обработан сервером электронной почты. Это делается путем разбивки исходного файла на группы из 3 байтов, и последующего деления каждой трехбайтной группы на 4 группы по 6 бит (в трёх байтах 24 бита). Эти 6 битов (с их помощью можно представить любое число от 0 до 63) затем отображаются в конкретный диапазон печатаемых символов ASCII и затем вновь собираются в строку ASCII, которую можно включить в сообщение электронной почты. У получателя сообщения выполняется обратный процесс, в ходе которого воссоздается исходный файл. Для кодирования в Base64 используются символы: для Uuencode используются следующие символы (будем называть эту строку uu-строкой): Различия между Base64 и Uuencode обусловлены способом форматирования закодированных файлов. При UU-кодировании из файла читаются группы по 45 байт, они кодируются описанным выше способом - каждые три байта превращаются в 4, каждый байт из этих четырех - номер символа в uu-строке, причём ноль соответствует первому символу. В начале результирующей строки должен быть символ, номер которого в uu-строке совпадает с количеством байт в исходной группе. Теперь немного о правилах отсылки вложений, закодированных в Uuencode. Прямо в теле письма нужно написать "begin 600 filename.ext", далее идет сам закодированный файл. Затем, после последней строки, с новой строки символ '`' и с новой строки "end". Например:
Теперь о кодировании в Base64. При кодировании в Base64 требуется форматировать закодированные данные в строки по 76 символов. Для реализации этого удобно читать по 57 байт, кодировать их в строку 76 символов. Самое интересное, как всегда, это последняя строка. Каждая группа из 4 символов в закодированной строке соответствует 3 байтам. Исключение составляют последние 4 символа. Они могут соответствовать 1, 2 или 3-м байтам. Нужно указать, сколько байтов закодировано. При uu-кодировании для этого использовался первый символ строки, но он же необоснованно применялся в начале каждой полной строки. При кодировании Base64 применяется следующий подход: Для отправки писем с вложениями, закодированными Base64 всегда используется протокол MIME. В спецификации MIME описывается, как в заголовке сообщения передать информацию о кодировке самого сообщения (его тела). Для этого используются три строчки заголовка примерно следующего вида:
В многосекционных сообщениях (например, с приложенными файлами - attachments) тип сообщения обозначается примерно таким образом: Описанная схема, стандартизуя способы передачи национальных символов и двоичных файлов в теле письма, не затрагивает их заголовков, где тоже могут быть национальные символы - в поле Subject (тема) или в полях From, To (в пояснениях к адресам). Эта проблема решается там, где требуется кодировать 8-битные заголовки и вставлять в них "микрообозначения" кодировки - "Q" для Quoted-Printable и "B" для Base64 примерно следующим образом:
|
||||||
Кодировка UUENCODE | ||||||
UUENCODE - Способ кодировки электронной почты, когда каждые три бита, "размазываются" по четырем. Программа WinZip умеет раскодировать такие файлы.
|
||||||
Кодировка MIME (base64) | ||||||
Multipurpose Internet Mail Extensions - Многоцелевые расширения почтовой службы Internet. Система передачи графики и другой нетекстовой информации по электронной почте или www. В MIME способ кодирования и декодирования электронных писем согласован с типом передаваемых документов. Тип документов указан в заголовках сообщений, которыми обмениваются электронный почтальон или навигатор WWW..
|
||||||
Кодировка Quoted-Printable | ||||||
Quoted-printable - (в устной речи употребляется сокращённое Qprintable). Способ семибитной кодировки электронной почты, когда вместо русских букв передаются их шестнадцатеричные коды, записанные латиницей.
|
||||||
Кодировка BinHex | ||||||
BinHex - Способ кодировки электронной почты, принятый на Macintosh. Длина строки 64 символа. Для совместимости поддерживается некоторыми Windows-почтальонами.
|
||||||
Кодировка Xbtoa | ||||||
BTOA - Способ кодировки электронной почты. Способ кодировки электронной почты, принятый на Macintosh. Длина строки здесь 78 символов. Для совместимости поддерживается некоторыми Windows-почтальонами.
|
||||||
Кодировка PGP | ||||||
PGP - Pretty Good Privacy. Программа шифрования (главным образом, для электронной почты).
|
||||||
Упакованный "пакет статей" | ||||||
Упакованный "пакет статей", включается сервером телеконференций по команде PACK.
|
||||||
Нужен оригинальный шрифт? | ||||||
Нет проблем - fontproblem@yandex.ru | ||||||
Сомневаетесь в выборе хостинга? Хотите проверить, прежде чем платить? eServer.ru предоставляет Вам эту возможность! SSL, MySQL, SSI, PHP, PERL, C++, JSP, неограниченный трафик, домен бесплатно и многое другое. Выберите нас, Вы не пожалеете об этом выборе! Узнать больше... |