.
10 сентября 2013

PHP — кракозябры в subject при отправке письма фукнцией mail в кодировке utf-8

posted in Полезности, Программирование |

Сегодня ваял небольшой php скриптик по email рассылке (стандартная Битрикс не подошла, т.к. в процессе нужно было перегенерировать пароли и произвести ещё кое какие манипуляции).
Писал конечно же в кириллице, кодировку использовал utf-8 и собственно, столкнулся с проблемой:
При получении письма в теме были кракозябры (текст gmail видимо сам перекодировал — проблем не было).

Собственно, 3 минуты гугла и решение найдено

На всякий случай, код перепубликую у себя:

data_charset;

        $sc=$this->send_charset;

        //Кодируем поля адресата, темы и отправителя

        $enc_to=mime_header_encode($this->to_name,$dc,$sc).' <'.$this->to_email.'>';

        $enc_subject=mime_header_encode($this->subject,$dc,$sc);

        $enc_from=mime_header_encode($this->from_name,$dc,$sc).' <'.$this->from_email.'>';

        //Кодируем тело письма

        $enc_body=$dc==$sc?$this->body:iconv($dc,$sc.'//IGNORE',$this->body);

        //Оформляем заголовки письма

        $headers='';

        $headers.="Mime-Version: 1.0\r\n";

        $headers.="Content-type: ".$this->type."; charset=".$sc."\r\n";

        $headers.="From: ".$enc_from."\r\n";

        //Отправляем

        return mail($enc_to,$enc_subject,$enc_body,$headers);

        }

      }

//Вот так мы будем отправлять письма:

    //Текстовое письмо

      echo('Plain text email - sending...');

      $email=new TEmail;

      $email->from_email='noreply@konservs.com';

      $email->from_name='Автор ІЇҐЭЄ іїґэє';

      $email->to_email='******@gmail.com';

      $email->to_name='Для Васі';

      $email->subject='Тема ІЇҐЭЄ іїґэє';

      $email->body='Текстовий тестовий лист. Тест: ІЇҐЭЄ іїґэє';

      if($email->send())

        echo('Plain text email - OK.'); else

        echo('Plain text email - Error!');

      //HTML письмо

      echo('HTML email - sending...');

      $email=new TEmail;

      $email->from_email='noreply@konservs.com';

      $email->from_name='Автор ІЇҐЭЄ іїґэє';

      $email->to_email='******@gmail.com';

      $email->to_name='Для Васі';

      $email->subject='Тема ІЇҐЭЄ іїґэє';

      $email->type='text/html';

      $email->body='Тестовий лист в HTML.

Header 1 (Заголовок 1)

Header 2 (Заголовок 2)

Header 3 (Заголовок 3)

Header 4 (Заголовок 4)

Header 5 (Заголовок 5)
Тест: ІЇҐЭЄ іїґэє'; if($email->send()) echo('HTML email - OK.'); else echo('HTML email - Error!'); ?>
Яндекс.Метрика