[Решено] swiftMailer и utf-8

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Ro7
Сообщения: 71
Зарегистрирован: 2013.08.17, 15:08

[Решено] swiftMailer и utf-8

Сообщение Ro7 »

Вместо кириллиц приходит письмо с заголовком: lalala =?utf-8?Q?=D0=BF=D1=80=D0=B8=D0=B2=D0=B5=D1=82?=
Как быть?

Код: Выделить всё

Yii::$app->mailer->compose('confirmEmail', ['userId' => 4, 'code' =>'bbb'])
            ->setFrom('noreply@domen.com')
            ->setTo('mail@ya.ru')
            ->setSubject('lalala привет')
            ->send(); 
Yii::$app->charset = UTF-8
Кодировка документа в IDE тоже UTF-8

Свойства письма:
Subject: lalala =?UTF-8?B?PT91dGYtOD9RPz1EMD1CRj1EMT04?=
=?UTF-8?B?MD1EMD1COD1EMD1CMj1EMD1CNT1EMT04Mj89?=
Content-Type: text/plain; charset=utf-8
Решено
Проблема вероятно из-за перегрузки функции mail() в mb_send_mail()
Установить параметр mbstring.func_overload в значение отличное от 7.
А также можно почитать на офф. сайте кое-что:
http://swiftmailer.org/docs/installing. ... leshooting
Последний раз редактировалось Ro7 2015.05.06, 14:54, всего редактировалось 1 раз.
mickgeek
Сообщения: 957
Зарегистрирован: 2014.05.31, 20:50
Откуда: Санкт-Петербург
Контактная информация:

Re: swiftMailer и utf-8

Сообщение mickgeek »

Куда приходят письма? На ящик или на локальную машину? Если второе, то это нормальное явление при "Content-Transfer-Encoding: quoted-printable". Проверяйте через почтовые клиенты.
Ro7
Сообщения: 71
Зарегистрирован: 2013.08.17, 15:08

Re: swiftMailer и utf-8

Сообщение Ro7 »

Приходит на Яндекс так, непосредственно в веб-интерфейсе. "Content-Transfer-Encoding: quoted-printable" присутствует, когда смотрю в Яндексе свойства письма
mickgeek
Сообщения: 957
Зарегистрирован: 2014.05.31, 20:50
Откуда: Санкт-Петербург
Контактная информация:

Re: swiftMailer и utf-8

Сообщение mickgeek »

Subject: lalala =?UTF-8?B?PT91dGYtOD9RPz1EMD1CRj1EMT04?=
=?UTF-8?B?MD1EMD1COD1EMD1CMj1EMD1CNT1EMT04Mj89?=
Content-Type: text/plain; charset=utf-8
Хотя, это похоже на Base64. Причём изначально закодированный в Quoted Printable. В конфигурационном файле какие настройки имеет компонент?

Также попробуйте перевести UTF-8 в нижний регистр:

Код: Выделить всё

Yii::$app->mailer->compose('confirmEmail', ['userId' => 4, 'code' =>'bbb'])
    ->setCharset('utf-8')
    ->setFrom('noreply@domen.com') 
Ro7
Сообщения: 71
Зарегистрирован: 2013.08.17, 15:08

Re: swiftMailer и utf-8

Сообщение Ro7 »

В нижнем - аналогично.
Конфиг - стандартный.
Как быть?

Код: Выделить всё

        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'useFileTransport' => false,
        ],
mickgeek
Сообщения: 957
Зарегистрирован: 2014.05.31, 20:50
Откуда: Санкт-Петербург
Контактная информация:

Re: swiftMailer и utf-8

Сообщение mickgeek »

Какое значение выставлено в php.ini у параметра mbstring.func_overload?
Ro7
Сообщения: 71
Зарегистрирован: 2013.08.17, 15:08

Re: swiftMailer и utf-8

Сообщение Ro7 »

mickgeek писал(а):Какое значение выставлено в php.ini у параметра mbstring.func_overload?
mbstring.func_overload = 7
mickgeek
Сообщения: 957
Зарегистрирован: 2014.05.31, 20:50
Откуда: Санкт-Петербург
Контактная информация:

Re: swiftMailer и utf-8

Сообщение mickgeek »

Установите "6" или поэкспериментируйте с другими значениями.
Ro7
Сообщения: 71
Зарегистрирован: 2013.08.17, 15:08

Re: swiftMailer и utf-8

Сообщение Ro7 »

На сайте swiftMailer:
Swift Mailer does not work when used with function overloading as implemented by mbstring (mbstring.func_overload set to 2). A workaround is to temporarily change the internal encoding to ASCII when sending an email:

Код: Выделить всё

if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2)
{
  $mbEncoding = mb_internal_encoding();
  mb_internal_encoding('ASCII');
}

// Create your message and send it with Swift Mailer

if (isset($mbEncoding))
{
  mb_internal_encoding($mbEncoding);
}
Получается надо отключить перегрузку функций, на ноль? Как-то не уютненько будет...
mickgeek
Сообщения: 957
Зарегистрирован: 2014.05.31, 20:50
Откуда: Санкт-Петербург
Контактная информация:

Re: swiftMailer и utf-8

Сообщение mickgeek »

"6" устанавливали?
Ro7
Сообщения: 71
Зарегистрирован: 2013.08.17, 15:08

Re: swiftMailer и utf-8

Сообщение Ro7 »

Отключил перегрузку, и письма стали приходить в читаемом виде.
mbstring.func_overload = 0

Ни у кого таких проблем нету, т.е. все работают в таком режиме? :?:
Ro7
Сообщения: 71
Зарегистрирован: 2013.08.17, 15:08

Re: swiftMailer и utf-8

Сообщение Ro7 »

Ура. Поставил 6, и тоже все работает.

Код: Выделить всё

mbstring.func_overload = 6
Спасибо, mickgeek. Сам бы долго еще мучился.
Ответить