Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Сеть > Кроссбраузерная отправка писем


Автор: Osp 23.4.2013, 23:51
Доброго дня.

У меня возникла проблема с кодировкой письма отправляемого при помощи кода

Код

<?php
$name = ($_GET['name']) ? $_GET['name'] : $_POST['name'];
$phone = ($_GET['phone']) ?$_GET['phone'] : $_POST['phone'];
$mail = ($_GET['mail']) ?$_GET['mail'] : $_POST['mail'];


if ($_POST) $post=1;
if (!$name) $errors[count($errors)] = 'Please enter your name.';
if (!$phone) $errors[count($errors)] = 'Please enter your phone.'; 

if (!$errors) {
    $to = '[email protected]';    
    $from = '<[email protected]>';    
    $subject = 'Новая заявка от ' . $name;    
    
    $message = '
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head></head>
    <body>
    <table>
        <tr><td>Имя заказчика:</td><td>' . $name . '</td></tr>
        <tr><td>Контактный телефон:</td><td>' . $phone . '</td></tr>
        <tr><td>Контактный e-mail:</td><td>' . $mail . '</td></tr>
    </table>
    </body>
    </html>';
    $result = sendmail($to, $subject, $message, $from);
    
    if ($_POST) {
        if ($result) echo 'Thank you! We have received your message.';
            else echo 'Sorry, unexpected error. Please try again later';        
        } else {
            echo $result;    
        }
    } else {
        for ($i=0; $i<count($errors); $i++) echo $errors[$i] . '<br/>';
        echo '<a href="/">Back</a>';
        exit;
    }
    
function sendmail($to, $subject, $message, $from) {
    $headers = "MIME-Version: 1.0" . "\r\n";
    $headers .= "Content-type: text/html; charset=utf-8" . "\r\n";
    $headers .= 'From: ' . $from . "\r\n";    
    $result = mail($to,$subject,$message,$headers);    
    if ($result) return 1;
    else return 0;
}
?>



Проблема в том что когда отправляешь из Internet Explorer письма то они приходят с изувечеными кирилическими символами, а с других браузеров все ок отображает. 

Не подскажете где может быть проблема? 


Спасибо

Автор: Arantir 23.4.2013, 23:53
На странице с формой (которая отправляется на приведенный вами скрипт) кодировка указана корректно?

Автор: Osp 23.4.2013, 23:55
Цитата(Arantir @ 23.4.2013,  23:53)
На странице с формой (которая отправляется на приведенный вами скрипт) кодировка указана корректно?

Да везде UTF-8 кодировка и в шаблоне страницы и в файле скрипта которые ajax ом отрабатывает раьоту формы.

Автор: Arantir 24.4.2013, 00:07
Цитата(Osp @  23.4.2013,  22:55 Найти цитируемый пост)
которые ajax ом

Все всегда упускают в своих вопросах самое главное...

У IE проблем с кодировкой при ajax. И в более старых версиях это не лечится, вроде бы.
По-умолчанию у него ISO-8859-1. Наверное, проще всего будет на сервере конвертировать из этой кодировки в нужную, если браузер IE.

Автор: Fortop 24.4.2013, 15:46
Цитата(Arantir @  24.4.2013,  00:07 Найти цитируемый пост)
У IE проблем с кодировкой при ajax. И в более старых версиях это не лечится, вроде бы.По-умолчанию у него ISO-8859-1.


xmlhttp.setRequestHeader(name, value)

Не работает разве?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)