ФорумПрограммированиеPHP для идиотов → кодировка при отправке писем

кодировка при отправке писем

  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz 30 августа 2010 г. 16:30

    сайт работает на utf8, отправляю письмо на [email protected]
    там блин ероглифы присылаются…

    но это я разобрался.Делаем mb_convert_encoding($mesg, "Windows-1251", "utf8");
    и все путем ,

    а вот если отправляю на [email protected] то опять ероглифы, как с этим бороться????
  • disc

    Сообщения: 843 Репутация: N Группа: Джедаи

    Spritz 30 августа 2010 г. 16:42, спустя 11 минут 34 секунды

    через заголовки указать нужную кодировку:


    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";

    mail($to, $subject, $message, $headers);


    http://md.php.net/manual/en/function.mail.php
  • Sinkler

    Сообщения: 8059 Репутация: N Группа: в ухо

    Spritz 30 августа 2010 г. 16:45, спустя 2 минуты 51 секунду

    мне начальник-проектировщик такое показывал. говорит, везде всегда были проблемы, а вот так - нормуль у всех пахало

        function mime_header_encode($str, $data_charset, $send_charset) {
    if($data_charset != $send_charset) {
    $str = iconv($data_charset, $send_charset, $str);
    }
    return '=?' . $send_charset . '?B?' . base64_encode($str) . '?=';
    }
    function mail($to, $message, $name, $email) {
    $return = $this->mime_header_encode($name, "UTF-8", "UTF-8").' <'.$email.'>'; //Адрес для полей "От:" "Обратный адрес:"
    $date = date('l\, M dS Y\, H:i:s');//Дата вида Friday, Mar 07th 2008, 15:43:34
    $time = date('r');//Дата в формате RFC 2822, вида Fri, 07 Mar 2008 15:49:41 +0300
    $subject = mime_header_encode("Новое сообщение с сайта", "UTF-8", "UTF-8");//"Тема:"
    $body = "Вам пришло новое сообщение с Вашего сайта\nОт: $name\nСообщение: $message\n"; // Тело письма
    // Заголовки. Задаем кодировку, дату, обратный адрес.
    $headers = 'MIME-Version: 1.0' . "\r\n" .
    'Content-Type: text/plain; charset=UTF-8; format=flowed' . "\r\n" .
    'Content-Transfer-Encoding: 8bit' . "\r\n" .
    'Date: ' . $time. "\r\n" .
    'From: ' . $return . "\r\n" .
    'Reply-To: ' . $return . "\r\n" .
    'Return-Path: ' . $return . "\r\n" .
    'X-Mailer: PHP/' . phpversion();
    if(mail($to, $subject, $body, $headers))
    return true;
    else
    return false;
    }

  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz 30 августа 2010 г. 16:50, спустя 5 минут 19 секунд

    охо функция…..спасибо
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 30 августа 2010 г. 17:17, спустя 27 минут 21 секунду

    function mail($to, $message, $name, $email) {
    //
    mail(//
    //

    Рекурсия, переопределение уществующий функции в пыхе)))
  • Sinkler

    Сообщения: 8059 Репутация: N Группа: в ухо

    Spritz 30 августа 2010 г. 17:21, спустя 3 минуты 39 секунд


    function mail($to, $message, $name, $email) {
    //
    mail(//
    //

    Рекурсия, переопределение уществующий функции в пыхе)))
    а, да, переименовать надо, это я из класса выдрал
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 30 августа 2010 г. 17:46, спустя 25 минут 6 секунд

    Sinkler, по сути mime_header_encode() и является практически самой важной частью. А дальше просто в заголовках указать кодировку и все будет работать. А в целом, то сам столкнулся с проблемой при формировании письма в УТФ-8, но решение нашлось достаточно быстро + заодно узнал ещё немного полезного для себя. Осталось только разобраться как создать письмо, картинка в котором будет идти не как приложение а как тело (точнее как часть тела письма) письма. Пока с этим траблы :(
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 31 августа 2010 г. 4:21, спустя 10 часов 35 минут 6 секунд

    покажи начальнику-проектировщику Zend_Mail или Swiftmailer шоле…
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 31 августа 2010 г. 4:54, спустя 33 минуты 8 секунд

    Абырвалг, а зачем? Ты ж не вызываешь лифт, чтоб спустится на один этаж. Хотя это в целом возможно, и все будет сделано с большим удобством, но вероятнее всего значительно дольше + с таким подходом вообще скоро "зачахнуть" можно :)
    Так что проще решить сию элементарную задачу и не мучаться.
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 31 августа 2010 г. 5:05, спустя 10 минут 57 секунд

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

Пожалуйста, авторизуйтесь, чтобы написать комментарий!