Правильная кодировка исходящих писем в SugarCRM
Материал из SpravkaCRM.Ru - Справочник по CRM
|
||||||||||||||
|
С этой проблемой я столкнулся при сопровождении SugarCRM PRO 6.1.3: письма, отправляемые из системы (будь то тестовые письма с информацией о настройках почты, или разнообразные уведомления), приходили в кривой кодировке. Их просто невозможно было прочесть.
Немного покопавшись в коде, нашел в файле /include/phpmailer/class.phpmailer.php описание функции Send(). Внутри этой функции одной из переменных является строка с заголовками отправляемого письма. Выведя эти заголовки на просмотр:
$header .= $this->CreateHeader(); print_array($header,1);
видим такую картину в браузере:
Date: Thu, 9 Jun 2011 16:56:33 +0400 Return-Path: do_not_reply@aspartner.ru To: =?ISO-8859-1?Q?=D0=90=D0=BB=D1=8C=D0=B1=D0=B8=D0=BD=D0=B0=20=D0=A0=D0=B8?= =?ISO-8859-1?Q?=D0=BD=D0=B0=D1=82=D0=BE=D0=B2=D0=BD=D0=B0=20=D0=A7=D1=83?= =?ISO-8859-1?Q?=D1=80=D0=B0=D0=BA=D0=BE=D0=B2=D0=B0?= From: =?ISO-8859-1?B?0J7QntCeICZxdW90O9CQ0KEt0J/QsNGA0YLQvdC10YAmcXVvdDs=?= Subject: ??? ????????? ?????? - ???????? ?????? Message-ID: X-Priority: 3 X-Mailer: PHPMailer (phpmailer.codeworxtech.com) [version 2.3] MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="ISO-8859-1"
Во всем это многообразии строк нас интересует самая последняя:
Content-Type: text/plain; charset="ISO-8859-1"
Она говорит о том, что письмо посылается в чуждой русскому языку кодировке ISO-8859-1.
Порывшись в интерфейсе SugarCRM, нигде не нашел, где можно указать другую кодировку (потому и пишу данную статью в разделе для разработчиков, а не администраторов).
В общем, поиски этой кодировки, и как она подставляется, привел в все тот-же конфигурационный файл config.php, лежащий в корневой директории системы. Параметр default_email_charset содержит нужное нам значение:
'default_email_charset' => 'ISO-8859-1',
Все, что нам осталось, так это подправить этот параметр, задав правильную кодировку (ну например, UTF-8).
Как и в настройке русского языка по-умолчанию, все необходимые изменения конфигурационного файла делаем в специальном файле config_override.php.
Открываем файл config_override.php, и добавляем соответствующую строчку в конец этого файла:
$sugar_config['default_email_charset'] = 'UTF-8';