За последние 24 часа нас посетили 24128 программистов и 1519 роботов. Сейчас ищут 1266 программистов ...

Помогите мне с тем, чтобы посланные письма отображались прав

Тема в разделе "Работа с почтой", создана пользователем C, 3 июн 2006.

  1. C

    C Активный пользователь

    С нами с:
    28 май 2006
    Сообщения:
    326
    Симпатии:
    0
    Я делаю неоффициальный сайт радио Эра.
    Тут он http://radioera.zoxt.net/webcam.php
    (На украинском)
    Он имеет чат.
    Пользователь может написать сообщение и послать его,
    при посылке оно не только сохраняется на сервере в базку
    и загружается оттудова всем остальным пользователям,
    а ещё и посылается в группу на гогле.
    Проблема в том, что при посылке киррилического текста
    сообщение выглядит у получающего так:

    C(1) Friday June 2, 21:39:46 & # 1055;& # 1088;& # 1077;& # 1074;& # 1077;& # 1076;, & # 1076;& # 1091;& # 1088;& # 1072;! (Повідомлення надіслано на Еру)


    (Повідомлення надіслано на Еру)
    - эта строчка добавлена автоматически на сервере и доставилась как видите читаемо,
    а сам текст сообщения не читаемо. Он был получен через $_REQUEST от пользователя.
    Мне уже добрые люди в разделе для новичков пытались объяснить, как это иправить,
    но я просто не могу это понять.
    Пожалуйста, напишите мне поподробнее, как мне сделать,
    чтобы киррилические сообщения нормально посылались!
    И почему это вообще оно так кодируется. Кто их вообще просил!
     
  2. C

    C Активный пользователь

    С нами с:
    28 май 2006
    Сообщения:
    326
    Симпатии:
    0
    Пожалуйста,
    посоветуйте мне, что почитать (электр.),
    какие слова вводить в поисковике хоть!
    Сам не могу найти ничё про это.
    В мануале кодировка циферкаим не описана.
     
  3. simpson

    simpson Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    я ведь давал тебе ссылку на примеры. там и функция есть для этого даже...

    PHP:
    1. <?php
    2. function Unicode2Charset($str, $charset = 'Windows-1251') // by SiMM, &#xHHHH; addition by John Profic
    3. {
    4.     return preg_replace(
    5.         '~&#(?:x([\da-f]+)|(\d+));~ie',
    6.         'iconv("UTF-16LE", $charset, pack("v", "$1" ? hexdec("$1") : "$2"))',
    7.         $str);
    8. }
    9.  
    10. $text = 'Превед, дура';
    11. print Unicode2Charset($text);
    12.  
    13. // output: "Превед, дура"
    14. ?>
     
  4. C

    C Активный пользователь

    С нами с:
    28 май 2006
    Сообщения:
    326
    Симпатии:
    0
    simpson
    Просто это функция сильно заумная.
    Как я могу её использовать, не понимая, что она делает.
    Ну ладно. Попробую.
    Спасибо.
     
  5. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    А под виндами работаеш, не понимая что они делают? ;)
     
  6. C

    C Активный пользователь

    С нами с:
    28 май 2006
    Сообщения:
    326
    Симпатии:
    0
    Ничё не помогло.
    Вот код
    PHP:
    1.  
    2.  
    3. <?php
    4.  
    5. function Unicode2Charset($str, $charset = 'Windows-1251') // by SiMM, &amp;#xHHHH; addition by John Profic
    6. {
    7.    return preg_replace(
    8.        '~&amp;#(?:x([\da-f]+)|(\d+));~ie',
    9.        'iconv("UTF-16LE", $charset, pack("v", "$1" ? hexdec("$1") : "$2"))',
    10.        $str);
    11. }
    12.  
    13. define("MAIL_ENCODING", "Windows-1251");
    14.  
    15. function make_mail_message($user_name, $userID, $date, $message, $send_to_era)
    16. {
    17.     if($send_to_era) $message.="\n(Повідомлення надіслано на Еру.)";
    18.     else $message.="\n(Повідомлення не надіслано на Еру.)";
    19.     $res=$user_name . "(" . $userID . ")    " . $date . "\n" . $message;
    20.     $res=Unicode2Charset($res, MAIL_ENCODING);
    21.     $res=wordwrap($res, 68);
    22.     return $res;
    23. }
    24.  
    25. $message_raw=$_POST['message'];
    26. $mail_message=make_mail_message($user->name, $user->ID, $now_str, $message_raw, $send_to_era);
    27.     $to="";
    28.     if($send_to_era)  {
    29.         $to .= RADIO_ERA_MAIL . ", ";  
    30.         $res_str.="Повідомлення було надіслано на Еру.<br>";
    31.     } else {
    32.         $res_str.="Повідомлення не було надіслано на Еру.<br>";
    33.     }
    34.     $to .= GROUP_MAIL;
    35.     $send_res=mail($to, "Повідомлення від слухача", $mail_message, get_mail_header());
    36.  
    37. ?>
    38.  
    39.  
     
  7. C

    C Активный пользователь

    С нами с:
    28 май 2006
    Сообщения:
    326
    Симпатии:
    0
    мне на геймдеве ответили уже
    Надописьмо html ом слать!
    content-type:text/html?

    СПАСИБО ВСЕМ![/i]