| CodeIgniter: как заставить отсылать корректные письма с русскими темой письма и именем отправителя? |
| Wednesday, 12 November 2008 | |
|
Многие разработчики сайтов, которые имеют дело с отправкой писем в CodeIgniter через библиотеку Email, сталкиваются с проблемой корректного отображения имени отправителя и темы письма, написанных простым русским языком. Грубо говоря, прочитать их невозможно вовсе. А все из-за того, что стандартная CodeIgniter-библиотека Email вставляет кириллицу, которую вы ей подсовываете в $this->email->from() и $this->email->subject(), прямо в заголовки, что представляет собой грубое некомильфо. (оговорюсь, что речь идет о CodeIgniter версии 1.6.3 и ниже) Чтобы избежать этого, требуется совсем немного - преобразовать критичные к кириллице параметры заголовков письма в специальную кодировку Base64. Потратив немного времени, я модифицировал стандартную библиотеку так, чтобы все преобразования происходили в автоматическом режиме по умолчанию. Теперь она сама совершает все необходимые действия по преобразованию русских (да и вообще любых non-ASCII символов) в заголовках письма.
А чтобы вам не пришлось делать то же самое, я решил ее выложить сюда: скачать библиотеку.
Установить ее проще простого: разархивируйте файл Email.php в каталог /system/application/libraries вашей установки Codeigniter По умолчанию Codeigniter отправляет все письма в кодировке UTF-8 - при использовании ее проблем с кодированием заголовков не возникает. Если вы отправляете письма в CI с использованием других кодировок - потрудитесь инициализировать кодировку корректно, тогда проблем не будет и у вас. Данная библиотека берет название кодировки прямо из настроек либы. Как установить нужную кодировку - курите хелп для CI, там процесс достаточно подробно описан.
P.S. Кроме исправления проблем с русскими символами, я немного подшаманил вид заголовков писем, отправляемых через эту библиотеку, которые в отдельных ситуациях выглядят некрасиво:
Буду рад любым замечаниям по работе библиотеки. |

