# Кодировка

Тела сообщений в текстовом и HTML форматах по умолчанию кодируются по алгоритму quoted-printable, если только вы не указали base64 через метод setHeaderEncoding(). Все другие вложения кодируются по алгоритму base64, если только не была указана другая кодировка при вызове метода addAttachment() и она не была установлена позднее для объекта части MIME. Кодировки 7Bit и 8Bit в настоящее время используются только для бинарных данных.

Кодирование заголовков, особенно темы (subject) сообщения - непростой вопрос. Zend_Mime в настоящее время реализует собственный алгоритм для кодирования quoted-printable сообщений в соответствии с RFC-2045. Это вызвано тем, что `iconv_mime_encode` и `mb_encode_mimeheader` испытывают проблемы с кодированием определенных символов. Этот алгоритм только разбивает заголовки пробелами, это приводит к тому, что заголовки могут значительно превышать предлагаемую длину в 76 символов. По этой причине рекомендуется переключаться на кодирование заголовков по алгоритму base64, как показано в следующем примере:

    // По умолчанию используется Zend_Mime::ENCODING_QUOTEDPRINTABLE
    $mail = new Zend_Mail('UTF-8');

    // Переключение на base64
    $mail->setHeaderEncoding(Zend_Mime::ENCODING_BASE64);

Zend_Mail_Transport_Smtp кодирует строки, начинающиеся с одной или двух точек, поэтому сообщение не будет нарушать протокол SMTP.