Неверная кодировка из формы обратной связи

(Ответов: 7, Просмотров: 9095)
  1. Сайты на WordPress Аватар для ADvi
    • Регистрация: 22.01.2011
    • Сообщений: 490
    • Репутация: 89
    • Webmoney BL: ?
    Установлен шаблон на Wordpress. Прописана форма обратной связи, которая отправляет сообщения на указанный в настройках темы адрес. Проблема в том, что адрес (@mail.ru) и веб-интерфейс этого почтовика не понимает кодировки сообщения. Вот так не понимает:
    Нажмите на изображение для увеличения.  Название:	IMG_01072012_162209.png  Просмотров:	16  Размер:	6.9 Кб  ID:	4982
    Если указать почту на гмейл, все корректно отображается. Стоить забор почты с мейлу на гмейл, и собранное письмо с мейл.ру на гмейле тоже отображается. Проблема только в мейлру, которому что-то непонятно..
    От себя добавлю, что пробовал дописывать $mailheaders = "Content-type:text/plain;charset=windows-1251rn";, но не помогает...
    Полный код файла:

    Полный

    <?php
    /**
    * The main template file for display contact page.
    *
    *
    * @package WordPress
    * @subpackage PHOTOBABAY
    */


    /**
    * Custom function to get current URL
    **/
    function curPageURL() {
    $pageURL = 'http';
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
    $pageURL .= "://";
    if ($_SERVER["SERVER_PORT"] != "80") {
    $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
    } else {
    $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
    }
    return $pageURL;
    }



    <br/><br/>
    <form id="contact_form" method="post" action="<?php echo curPageURL(); ?>">
    <p style="margin-top:20px">
    <label for="your_name">Имя</label><br/>
    <input id="your_name" name="your_name" type="text" style="width:90%"/>
    </p>
    <p style="margin-top:20px">
    <label for="email">Email</label><br/>
    <input id="email" name="email" type="text" style="width:90%"/>
    </p>
    <p style="margin-top:20px">
    <label for="message">Сообщение</label><br/>
    <input id="message" name="message" type="text" style="width:90%"/>
    </p>
    <br/><br/>
    <p style="margin-top:20px">
    <input type="submit" value="Отправить"/>
    </p>
    </form>
    <div id="reponse_msg"></div>

    <?php
    }

    //if submit form
    else
    {

    /*
    |--------------------------------------------------------------------------
    | Mailer module
    |--------------------------------------------------------------------------
    |
    | These module are used when sending email from contact form
    |
    */

    //Get your email address
    $contact_email = get_option('pm_contact_email');

    //Enter your email address, email from contact form will send to this addresss. Please enter inside quotes ('myemail@email.com')
    define('DEST_EMAIL', $contact_email);

    //Change email subject to something more meaningful
    define('SUBJECT_EMAIL', 'Письмо с сайта PhotoBabay.com');

    //Thankyou message when message sent
    define('THANKYOU_MESSAGE', 'Спасибо! Ваше сообщение было успешно отправлено.');

    //Error message when message can't send
    define('ERROR_MESSAGE', 'Произошла непредвиденная ошибка. Попробуйте, пожалуйста, позже.');


    /*
    |
    | Begin sending mail
    |
    */

    $from_name = $_POST['your_name'];
    $from_email = $_POST['email'];

    $message = 'Имя: '.$from_name.PHP_EOL;
    $message.= 'Email: '.$from_email.PHP_EOL.PHP_EOL;
    $message.= 'Сообщение: '.PHP_EOL.$_POST['message'];


    if(!empty($from_name) && !empty($from_email) && !empty($message))
    {
    mail(DEST_EMAIL, SUBJECT_EMAIL, $message);

    echo THANKYOU_MESSAGE;
    echo '</p>';

    exit;
    }
    else
    {
    echo ERROR_MESSAGE;

    exit;
    }

    /*
    |
    | End sending mail
    |
    */
    }

    ?>
    [свернуть]


    Код, который, по моему мнению, нужно подправить (дописать чо-нить :))
    PHP код:
        /*
        |
        | Begin sending mail
        |
        */
        
        
    $from_name $_POST['your_name'];
        
    $from_email $_POST['email'];

        
    $message 'Имя: '.$from_name.PHP_EOL;
        
    $message.= 'Email: '.$from_email.PHP_EOL.PHP_EOL;
        
    $message.= 'Сообщение: '.PHP_EOL.$_POST['message'];
            
        
        if(!empty(
    $from_name) && !empty($from_email) && !empty($message))
        {
            
    mail(DEST_EMAILSUBJECT_EMAIL$message);
        
            echo 
    THANKYOU_MESSAGE;
            echo 
    '</p>';
            
            exit;
        }
        else
        {
            echo 
    ERROR_MESSAGE;
            
            exit;
        }
        
        
    /*
        |
        | End sending mail
        |
        */

    Прошу помощи
    Последний раз редактировалось ADvi; 01.07.2012 в 19:59.
    • 0
  2. Гуру
    • Регистрация: 09.10.2011
    • Сообщений: 1,814
    • Репутация: 251
    ADvi, у Вас с ПХП как? Читайте про фунцию convert_cyr_string
    • 1

    Спасибо сказали:

    ADvi(02.07.2012),
  3. Опытный Аватар для leonidukg
    • Регистрация: 25.11.2006
    • Сообщений: 325
    • Репутация: 308
    • Webmoney BL: ?
    mail(DEST_EMAIL, SUBJECT_EMAIL, $message);

    замените на:

    mail(DEST_EMAIL, SUBJECT_EMAIL, $message, "Content-Type: text/plain; windows-1251" );
    • 1

    Спасибо сказали:

    ADvi(02.07.2012),
  4. PHP Developer Аватар для HiNeX
    • Регистрация: 26.04.2012
    • Сообщений: 222
    • Репутация: 47
    • Webmoney BL: ?
    PHP код:
    $message iconv("utf-8""windows-1251"$message);
    mail(DEST_EMAILSUBJECT_EMAIL$message); 
    Попробуйте так
    • 1

    Спасибо сказали:

    ADvi(02.07.2012),
  5. Сайты на WordPress Аватар для ADvi
    • Регистрация: 22.01.2011
    • Сообщений: 490
    • Репутация: 89
    • Webmoney BL: ?
    HiNeX, Спасибо, Ваш вариант сработал
    • 0
  6. Опытный Аватар для leonidukg
    • Регистрация: 25.11.2006
    • Сообщений: 325
    • Репутация: 308
    • Webmoney BL: ?
    HiNeX, это костыль. Письмо должно отправлять с верной кодировкой, иначе потом в другом почтовике будет криво.
    • 0
  7. PHP Developer Аватар для HiNeX
    • Регистрация: 26.04.2012
    • Сообщений: 222
    • Репутация: 47
    • Webmoney BL: ?
    leonidukg, согласен. Возможным решением может быть отправка хидера с кодировкой UTF-8 или Windows-1251, при использовании этого костыля...
    • 0
  8. Опытный Аватар для leonidukg
    • Регистрация: 25.11.2006
    • Сообщений: 325
    • Репутация: 308
    • Webmoney BL: ?
    HiNeX, Да просто нужно:

    mail(DEST_EMAIL, SUBJECT_EMAIL, $message, "Content-Type: text/plain; UTF-8" );
    • 1

    Спасибо сказали:

    ADvi(09.07.2012),

Похожие темы

Темы Раздел Ответов Последний пост
Неверная кодировка сервера!
Прочее 3 28.02.2012 18:39
Автозаполнение формы обратной связи, как это сделать ?
Web программирование 20 18.01.2012 10:46
Форма обратной связи на WP
Web программирование 4 15.08.2011 14:06
Форма обратной связи на WP
Вопросы от новичков 2 15.08.2011 01:32
Форма обратной связи
Web программирование 13 28.07.2011 12:19

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры