Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: mail() правильная кодировка
 
 автор: kievigor   (24.12.2005 в 04:28)   письмо автору
 
 

Есть проблема с кодировкой при отправке почты с вашего форума.
Если при регистрации указать имя на русском языке, то при получении письма с этого адреса и открытии письма Outlook 6, имя в письме не читабельно.
Я обнаружил это когда столкнулся сам с аналогичной проблемой и искал ответ в этом форуме. Может плохо искал, но не нашел ничего толкового. А потом обнаружил туже проблему и у вас. Порывшись немного в инете и поэкспериментировав я нашел все же решение и на всякий случай хочу им поделиться, и с разработчиками форума, и со всеми интересующимися темой отправки мейла с помощью функции mail(); в кодировке koi8-r, с правильным отображением всех параметров.

<?php

//В качестве аргументов этой функции мы передаем параметры:
//$to — кому
//$subj — тема сообщения
//$body — само сообщение
//$from — от кого, например "Robot<robot@mail.ru>"

function mailer($to, $subj, $body, $from)
{
$to = convert_cyr_string($to, "w", "k");
$subj = convert_cyr_string($subj, "w", "k");
$body = convert_cyr_string($body, "w", "k");
$from = "From: ".$from."\nContent-Type: text/plain; charset=\"koi8-r\"\nContent-Transfer-Encoding: 8bit";
$from = convert_cyr_string($from, "w", "k");

if(mail($to, $subj, $body, $from))
{
echo("Письмо успешно отправлено");
}
else
{
echo("К сожалению, письмо не отправлено");
}
}

//-----------------------------------------------------------------------------------------------------
$to = "his_mail@mail.ru"; // Адрес получателя
$subj = "Вася-Vasya(Subject: Пробное письмо)"; // Тема письма
$body = "Текст письма бла-бла-бла. WWWW GGGGG FFFFFF ZZZZZZZ";
$name = "Вася-Vasya"; // Доп.информ. Имя(или название) отправителя
$mail = "back_mail@mail.ru"; // Доп.информ. Обратный адрес
$from = $name."<".$mail.">"; // Объединяем

mailer($to, $subj, $body, $from); // Отправляем в функцию для отправки

?>

Надеюсь этот пример многим поможет избежать ошибок и недоразумений.
Вот пару ссылок на другие ресурсы где затрагивается эта тема.
http://www.kurepin.ru/php/utils/
http://www.cherry-design.ru/news/print.php?type=article&id=2
http://www.ru-coding.com/php_4.php
http://netgen.com.ua/forums/topic.php?id=68

   
 
 автор: kievigor   (24.12.2005 в 05:20)   письмо автору
 
   для: kievigor   (24.12.2005 в 04:28)
 

Посмотрел файл (mail.php), который отправляет письма с этого форума и обнаружил, что строка ($header) не кодируется в KOI8-R, из за чего и происходит неправильное отображение имен зарегистрированных на русском языке, при получении почты. Вставьте перед отправкой почты
$header = convert_cyr_string($header, 'w', 'k');
И все заработает правильно.

   
 
 автор: cheops   (24.12.2005 в 13:16)   письмо автору
 
   для: kievigor   (24.12.2005 в 04:28)
 

большое спасибо - в ближайшее время поправим.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования