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

Форум PHP

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

 

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

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

тема: Кодировка при отправке классом письмо
 
 автор: visible   (25.01.2005 в 15:19)   письмо автору
 
 

При посылки письма с кодом показанным ниже, русские символы не отображаются!
Вот код страницы mail_class.php

<?php
class Mail
{

var 
$to ='';
var 
$from ='';
var 
$reply_to '';
var 
$cc ='';
var 
$bcc ='';
var 
$subject ='';
var 
$msg ='';

//Допустимость почтовых адресов
var $validate_email true;
//Допустимость доменных имен в записях DNS
var $rigorous_email_check true;
var 
$allow_empty_subject false;
var 
$allow_empty_msg false;
var 
$headers = array();

function 
check_fields()
{
        if(empty(
$this->to))
        {
                return 
false;

                }
        if(!
$this->allow_empty_subject && empty($this->subject))
        {
        return 
false;
                }
        if(!
$this->allow_empty_msg && empty($this->msg))
        {
          return 
false;
                          }

        if(!empty(
$this->from))
        {
          
$this->headers[] = "From: $this->from";
                }
        if(!empty(
$this->reply_to))
        {
          
$this->headers[] = "Reply_to: $this->reply_to";
                }

        if(
$this->validate_email)
        {
          if(!
preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i"$this->to))
          {
          return 
false;

                  }
                  return 
true;

                }



        }
function 
send()
{

if(!
$this->check_fields()) return true;
if(
mail($this->tohtmlspecialchars(stripslashes(trim($this->subject))), htmlspecialchars(stripslashes(trim($this->msg)))))
{ return 
true;
}
else
{

return 
false;

        }

 }



}



?>


Подскажите где надо вставить заголовок для правильной кодировки письма.

   
 
 автор: cheops   (25.01.2005 в 15:56)   письмо автору
 
   для: visible   (25.01.2005 в 15:19)
 

Хм... т.е. приходят кроказяблики? А в какой кодировке отправляется письмо?

   
 
 автор: Visible   (26.01.2005 в 12:20)   письмо автору
 
   для: cheops   (25.01.2005 в 15:56)
 

Да именно так, крокозяблики.
В какой кодировке отправляется не знаю! Могу сказать этот класс mail взят из вашей книги!!

   
 
 автор: Artemy   (26.01.2005 в 22:58)   письмо автору
 
   для: Visible   (26.01.2005 в 12:20)
 

А почему у меня прописоваеться кодировка windows - 1251, а письмо приходит с заголовком в котором половина на русском написана а другая на кривом:-)) ?
Имею дело с функцией mail()

   
 
 автор: glsv (Дизайнер)   (26.01.2005 в 23:52)   письмо автору
 
   для: Artemy   (26.01.2005 в 22:58)
 

>А почему у меня прописоваеться кодировка windows - 1251
А как прописываете кодировку?

   
 
 автор: Artemy   (27.01.2005 в 15:44)   письмо автору
 
   для: glsv (Дизайнер)   (26.01.2005 в 23:52)
 

Вот так
<?
$adds 
"From: $email\n"
$adds .= "X-Sender: < $name  >\n";
$adds .= "Content-Type: text/plain; charset=windows-1251\n"
mail($valmail$thm$msg$adds);
?>

   
 
 автор: Artemy   (28.01.2005 в 21:09)   письмо автору
 
   для: Artemy   (27.01.2005 в 15:44)
 

Дизайнер Вы спрашивали!
Я ответил, и тут же спросил!
Жду ответа, пожалуйста...!

   
 
 автор: glsv (Дизайнер)   (28.01.2005 в 23:07)   письмо автору
 
   для: Artemy   (28.01.2005 в 21:09)
 

Хоть вы и указали кодировку в письме, но само письмо может быть в другой кодировке. И разные клиенты по разному на эти сроки реагируют.

$adds .= "Content-Type: text/plain; charset=windows-1251\n";


Попробуйте и тему и само сообщение прогнать через функцию перекодировки.

$thm =  convert_cyr_string($thm,'w','k'); 
$msg =  convert_cyr_string($msg,'w','k'); 

Это из windows-1251 в KOI8-R
И в обратную сторону тоже попробуйте если не получится.

> Дизайнер Вы спрашивали!
Не было возможности прочитать форум :(

   
 
 автор: Artemy   (29.01.2005 в 10:16)   письмо автору
 
   для: glsv (Дизайнер)   (28.01.2005 в 23:07)
 

Примного благодарен, сейчас попробую!

   
 
 автор: Artemy   (06.02.2005 в 23:06)   письмо автору
 
   для: Artemy   (29.01.2005 в 10:16)
 

Извините что так поздно ответил, только вот добрался!

А обратно это как?

   
 
 автор: Artemy   (06.02.2005 в 23:12)   письмо автору
 
   для: Artemy   (06.02.2005 в 23:06)
 

Sorry, уже разобрался, чуть ниже посмотрел!

   
 
 автор: glsv (Дизайнер)   (26.01.2005 в 23:50)   письмо автору
 
   для: visible   (25.01.2005 в 15:19)
 

Скорее всего проблема с кириллическими кодировками KOI8-R и windows-1251
Для переконвертации из KOI8-R в windows-1251 и обратно следует воспользоваться функцией convert_cyr_string()
http://www.softtime.ru/dic/id_dic=16&id_group=1

Попробуйте с ней поэкспериментировать.

   
 
 автор: XPraptor   (27.01.2005 в 14:24)   письмо автору
 
   для: visible   (25.01.2005 в 15:19)
 

Да у меня теже лыжи на днях были. Например сайт генерит и отправляет текста в кодиовке win-1251 а почтовый клиент у меня на винде показывает заголовки в KOI8-R, так вот текст приходит нормально, а заголовки соответственно корявые, ну я давай как парень конвертить перед отправкой в KOI8-R так оно стало заголовки нормально показывать, а текст приходится выбирать кодировку в свойствах. Плюнул я на это дело, и вернул как есть. Принес на работу, а там тот же почтовый клиент показывает заголовки не в KOI8-R а в win-1251 и весь текст и заголовки нормально выглядят. Вот такая шняга, поэтому не парься, а посылай только в виндовых кодировках, а там как повезет, у кого какой почтовый клиент и система.

   
Rambler's Top100
вверх

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