Главная > PHP > Как корректно отправить письмо в php в кодировке UTF-8

Как корректно отправить письмо в php в кодировке UTF-8

Что делать, если стандартная функция php mail() отправляет письма в неверной кодировке. На самом деле она отправляет что дают и совершенно ничего не проверяет. Что же делать? Немного теории:
Тело письма может быть текстом в любой кодировке. Немного сложнее дело обстоит с составляющими заголовка письма (Subject, From, To), они по стандарту должны быть в US-ASCII. Использование в заголовках кодированного текста регламентируется стандартом RFC-2047. Стандарт задает две возможные формы кодирования - BASE64 и Quoted-Printable. BASE64 более универсальна и работает в том числе для кодировки UTF-8, поэтому мы будем использовать именно эту форму. MIME-совместимый почтовый клиент обязан уметь читать обе формы.
 И практика: Ниже приведен пример простой функции, которая отправляет в требуемой кодировке MIME-совместимые письма на русском языке в виде простого текста или в формате HTML Здесь используется еще и вспомогательная функция mime_header_encode() для преобразования каждого заголовка в MIME-совместимый формат. В PHP предусмотрена аналогичная функция mb_encode_mimeheader(), но она не всегда работает некорректно (возвращает неверный результат) и лучше перестраховаться. Использование описанной функции достаточно простое. В случае, если кодировка отправки письма отличается от текущей кодировки данных, используется iconv() для преобразования кодировки.
Categories: PHP Tags: , , , ,
1 звезда2 звезды3 звезды4 звезды5 звезд (Рейтинг отсутствует)

Loading...Loading...
  1. Владимир
    22 Декабрь 2011 в 11:56 | #1

    Кодировку, обозначенную как CP1251 понимают не все клиенты.

  1. Пока что нет уведомлений.

Current month ye@r day *


6 − = один

Heads up! You are attempting to upload an invalid image. If saved, this image will not display with your comment.