За последние 24 часа нас посетили 17684 программиста и 1614 роботов. Сейчас ищут 1877 программистов ...

Проблема с php скриптом отправки почты

Тема в разделе "PHP для новичков", создана пользователем Enselerizer, 20 фев 2013.

  1. Enselerizer

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

    С нами с:
    22 мар 2012
    Сообщения:
    18
    Симпатии:
    0
    Проблема с php скриптом отправки почты:
    HTML форма отправляет в send.php 7 переменных.
    send.php их принимает, формирует тело письма, отправляет его, и переадресовывает на красивую надпись "письмо отправлено":
    Код (Text):
    1.  
    2. <?php
    3. if (isset($_POST['sendMessage'])) {
    4.  
    5.  $technik=$_POST['technik'];
    6.  $terrnik=$_POST['terrnik'];
    7.  $why=$_POST['why'];
    8.  $old=$_POST['old'];
    9.  $playingold=$_POST['playingold'];
    10.  $me=$_POST['me'];
    11.  $build=$_POST['build'];
    12.  
    13.  $picture="";
    14.  $headers  = "Content-type: text/html; charset=windows-1251 \r\n";
    15.  $headers .= "From: 123.ru <betatest@123.ru>\r\n";
    16.  $thm = "&#1053;&#1086;&#1074;&#1099;&#1081; &#1090;&#1077;&#1089;&#1090;&#1077;&#1088;";
    17.  $msg="
    18.    &#1053;&#1080;&#1082; &#1085;&#1072; &#1075;&#1088;&#1080;&#1085;&#1090;&#1077;&#1093;&#1077;: $technik<br />
    19.    &#1053;&#1080;&#1082; &#1085;&#1072; &#1075;&#1088;&#1080;&#1085;&#1090;&#1077;&#1088;&#1088;&#1077;: $terrnik<br />
    20.    &#1045;&#1084;&#1091; $old<br />
    21.    &#1054;&#1085; &#1080;&#1075;&#1088;&#1072;&#1077;&#1090; &#1091;&#1078;&#1077; $playingold<br /><br />
    22.    &#1053;&#1077;&#1084;&#1085;&#1086;&#1075;&#1086; &#1086; &#1085;&#1105;&#1084;:<br /> $me<br /><br />
    23.    &#1045;&#1075;&#1086; &#1082;&#1072;&#1088;&#1100;&#1077;&#1088;&#1072;:<br /> $build<br /><br />
    24.    &#1054;&#1085; &#1093;&#1086;&#1095;&#1077;&#1090; &#1089;&#1090;&#1072;&#1090;&#1100; &#1090;&#1077;&#1089;&#1090;&#1077;&#1088;&#1086;&#1084; &#1087;&#1086;&#1090;&#1086;&#1084;&#1091;, &#1095;&#1090;&#1086;:<br /> $why
    25. ";
    26.  $mail_to="enselerizer@mail.ru";
    27.  if(empty($picture)) mail($mail_to, $thm, $msg, $headers);
    28. } else ;
    29. header("Location: sendfinish.shtml")
    30. ?>
    Заметно, что все русские символы были преобразованы в их индекс для правильного отображения.

    Идём дальше.
    Я получаю письмо с формой очередного клиента. однако весь русский текст выглядит примерно так:
    Код (Text):
    1. Я норм пацан
    Я так понимаю, проблема в строчке 17, где указывается кодировка текста.
    Какую кодировку надо мне поставить?
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    во-первых не надо переделывать русские символы в html-сущности (то что вы индексами назвали)
    во-вторых у вас приходит utf8 в cp1251 поэтому вам достаточно просто снабдить письмо нужным заголовком с указанием кодировки (utf8)
     
  3. Enselerizer

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

    С нами с:
    22 мар 2012
    Сообщения:
    18
    Симпатии:
    0
    Попробую...

    Добавлено спустя 1 минуту 16 секунд:
    Помогло, спасибо.

    Ещё 1 вопросик:
    если у меня уже накидано таких писем, есть возможность транслителировать их в нормальный текст?
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    накидано куда?
     
  5. Enselerizer

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

    С нами с:
    22 мар 2012
    Сообщения:
    18
    Симпатии:
    0
    На почту.
    Это не надо делать автоматически. Просто есть ли такой конвертер?

    Выглядит примерно так:

    Немного о нём:
    без этого никак? человек, у которого есть совесть. правда прописные буквы влом писать :)

    Его карьера:
    нет, ничего не было

    Он хочет стать VIP потому, что:
    на сайте сборка хорошая... и админы работают отлично.. думаю и с сервером terraria админы и сборка будут просто идеальные :)
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    скорее нет чем да. письмо пришло в неверной кодировке с неверными заголовками. таким оно и будет в почте. его можно выгрузить, отредактировать исходный код и загрузить обратно. это чтоб раз и навсегда. если не лопатить письма - меняйте кодировку в клиенте. только у вас как-то странно получается - часть текста нормально отображается а другая - в юникоде.
     
  7. Enselerizer

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

    С нами с:
    22 мар 2012
    Сообщения:
    18
    Симпатии:
    0
    Ну, в общем хотя бы новых таких писем приходить не будет.
    Спасибо за помощь, тема более не актуальна.

    Кстати, если вы работаете с HTML, у меня в соответствующем разделе есть топик.