Добавление комментариев отключено
помогите пожалуйста разобраться.
пытаюсь из пхп-скрипта отправить. сендмаил настроен. отправляю следующим скриптом:
www.internet-technologies.ru/articles/article_1361.html
сама пхп-страница в кодировке uft-8 (без BOM). ну и текст, который передаю(кириллические символы) соответственно тоже. в скрипте в нужных местах. в результате кодирую из uft-8 в koi8-r. принимаю аутлуком и наблюдаю кракозябры в тексте писма и в теме. адрес отправителя(или текст, который можно вместо него поставить) передается как и задумано русскими буквами.
отчего так происходит? ведь перекодирую все одними и теми же функциями... пробовал так же кодировать из utf-8 в windows-1251 и в другие кодировки. нужного результата так и не добился.
так же пробовал вот таким скриптом отправить письмо:
$subj = "Заявка на дополнительное тестирование линии";
$subject = '=?koi8-r?B?'.base64_encode($subj).'?=';
$headers = "MIME-Version: 1.0\r\nContent-type: text/html; charset=koi8-r\r\n";
$headers .= 'From: =?Windows-1251?B?'.base64_encode('Форма за').'?= ' . "\r\n";
$body='=?koi8-r?B?'.base64_encode(convert_cyr_string($subject_send, "w","k")).'?=';
mail('sn@t.ru',$subject,$body, $headers);
здесь дело получше обстоит. русскими буквами отображаются тема и адрес отправителя. текст письма опять кракозябрами.
подскажите где искать правильное решение - чтобы получить письмо с русским текстом полностью.
ваш скрипт тоже не помог
10.09.2010 Александр
1) Может генератором сделать? Он вроде с кодировками проблем не знает.
2) В Вашем примере
Тема письма $subject - приходит в нужной кодировке. Может от этого и ковырять, значит $body наверное надо делать также, т.е.
$body='=?koi8-r?B?'.base64_encode($subject_send).'?=';
Либо как адрес отправителя:
$body='=?Windows-1251?B?'.base64_encode($subject_send).'?= ';
10.09.2010 ret
первый раз слышу про генератор. можно узнать что это такое?
10.09.2010 Александр
Наверху в меню ссылка
www.php-mail.ru/?id=6
10.09.2010 ret
отсылаю письмо с помощью генератора. происходит то же самое: русскими буквами в полученном письме написано только от кого пришло. в поле тема - =?windows-1251?B?Zmdk9Pvg9Pvg9Pvg?=. сам текст письма из кракозябр. после получения пытаюсь в аутлуке в ручную каодировку сменить - ни одна не подходит.
есть подозрение, что потчовы сервер так настроен, что изменяет кодировку при получении. может подобное быть?..
10.09.2010 Александр
Честно не знаю, что там с сервером или со скриптами. Я бы начал танцы с бубнами вокруг кодировки. Если бы ни одна не подошла, писал бы в тех. поддержку хостинга
После
$mail->IsHTML(true);
Добавьте строчку
$mail->$CharSet = 'windows-1251'; // попробуйте тут разные кодировки
17.09.2010 Сергей
По правде говоря Вы мне помогли, я нашел ошибку над которой бился более 7 часов, может и я Вам помогу)))
Ошибка у Вас в следующей строчке:
$body='=?koi8-r?B?'.base64_encode(convert_cyr_string($subject_send, "w","k")).'?=';
Вот работающий пример, который я использовал на своем сайте:
www.web-eurohost.com/kontacts.php
$address = 'admin@web-eurohost.com';
$sub = "Сообщение с главного сайта проекта";
$sub = "=?utf-8?b?" . base64_encode($sub) . "?=";
$headers = "MIME-Version: 1.0 \r\nContent-type: text/plain; charset=utf-8 \r\n";
$headers .= "From: <$email>\r\n";
$mes = "Отправил:".$name."\r\nУказал обратный адрес: ".$email."\r\nСодержание письма: \r\n".$message;
$verify = mail ($address,$sub,$mes,$headers);
Думаю этот фрагмент Вам поможет!
Если же Вы хотите отправить в другой кодировке, не в utf-8, то предварительно все данные нужно перекодировать в эту кодировку, а потом уже создавать переменные для mail.
Как перекодировать скажем из utf-8 в Windows-1251 переменную $subj, она ведь у Вас в utf-8 как и другие данные:
$subj= iconv("UTF-8","Windows-1251",$subj);
Желаю удачи!
06.08.2011 svetlii7f
to " 17.09.2010 Сергей "
да, Вы превосходны. Когда всё работает на ютф, помойму, помимо этого ничто не заставит отображаться кириллицу нормально.
Весьма признателен.
Вопрос был задан на этой странице. Но если Вам это не интересно, могу предложить Вам почитать про платный хостинг.