Проблема с темой письма (информация о заказах и т.д.)

30.12.2014 21:41:14
Как оно часто бывает, проблема появилась после переноса сайта с одного хостинга на другой.
Письма, отправленные через SMPT, стали приходить с битой кодировкой в теме письма. Т.е. сам текст письма отображался верно, а вот вместо заголовка были нечитаемые символы.

Уточню, что сам сайт и письма от него были в utf-8. После кратной переписки с хостреами, было принято решение сменить кодировку писем на windows-1251.

  1. Отредактировал файл /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
    6
        public function subject($subject)
        {
            //$subject = $this->_prep_q_encoding($subject);
            $this->_set_header('Subject', $subject);
            return $this;
        }

  2. В файле /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
    16
        private 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();
        }


Категории: ImageCms
Яндекс.Метрика