Как оно часто бывает, проблема появилась после переноса сайта с одного хостинга на другой.
Письма, отправленные через SMPT, стали приходить с битой кодировкой в теме письма. Т.е. сам текст письма отображался верно, а вот вместо заголовка были нечитаемые символы.
Проблема с темой письма (информация о заказах и т.д.)
30.12.2014
Уточню, что сам сайт и письма от него были в utf-8. После кратной переписки с хостреами, было принято решение сменить кодировку писем на windows-1251.
- Отредактировал файл /system/libraries/Email.php
У класса CI_Email заменил:
var $charset = "utf-8";
на
var $charset = "windows-1251";// "utf-8";
у метода public function subject($subject), закомментировал первую строку:
1
2
3
4
5
6public function subject($subject) { //$subject = $this->_prep_q_encoding($subject); $this->_set_header('Subject', $subject); return $this; }
- В файле /application/modules/cmsemail/classes/ParentEmail.php
Переработал метод _sendEmail, добавив в него изменении кодировки полей с UTF-8 на windows-1251, это первые пять строк:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16private function _sendEmail() { $this->from_email = iconv("UTF-8", "windows-1251", $this->from_email); $this->from = iconv("UTF-8", "windows-1251", $this->from); $this->send_to = iconv("UTF-8", "windows-1251", $this->send_to); $this->theme = iconv("UTF-8", "windows-1251", $this->theme); $this->message = iconv("UTF-8", "windows-1251", $this->message); $this->email->from($this->from_email, $this->from); $this->email->to($this->send_to); $this->email->subject($this->theme); $this->email->message($this->message); return $this->email->send(); }