Отправка писем в правильной кодировке на PHP
ru-coding.com/
Своя рассылка на PHP
У меня часто
спрашивают, как отсылать письма с помощью PHP в правильной
кодировке: после отправки письма с русскими буквами, на
почту людям приходит абракадабра.
А все дело в том,
что для почты у нас принято использовать кодировку KOI8-R, а для веба - Win-1251 (ANSI) - так, и
выходит - мы шлем с сайтов в win-1251, а почтовые
программы открывают его как KOI8-R...
Выходов из
ситуации хватает. Начиная, можно на самой веб странице можно
использовать кодировку KOI8-R. Но я бы не советовал
этого не делать - у некоторых посетителей могут возникнуть с
кодировкой на самой странице. Так что оставим этот метод для
ламеров, а применим более изящный, на PHP.
Итак, что же можно
сделать? Первое что приходит в голову - а не проще ли
перекодировать само сообщение? И в правду, нет нечего проще.
Тем более в PHP
предусмотрена стандартная процедура - convert_cyr_string(string str, string
from, string to); как Вы уже, наверное, догадались, функция
перекодирует текст, содержащийся в переменной $str из кодировки $from в кодировку $to. Указание кодировки происходит
посредством символов латинского алфавита, вот доступные
параметры и соответствующие им кодировки:
k |
KOI8-R |
w |
Win-1251 |
i |
ISO8859-5 |
a |
X-CP866 |
d |
X-CP866 |
m |
X-Mac-Cyrillic |
Как видно из
таблицы, в нашем случае, перед отправкой сообщения,
содержащегося в переменной $msg,
его нужно перекодировать из w в k (из Win-1251 в KOI8-R), это выглядит так: $msg = convert_cyr_string ($msg,w,k); вот и все,
теперь можно спокойно отсылать наше письмо.