Как отправить электронное письмо в кодировке base64 в CodeIgniter?

#php #codeigniter #sendmail

#php #codeigniter #отправить почту

Вопрос:

Я столкнулся с проблемой нечетного символа восклицания в электронном письме. Для этого я протестировал отдельную почтовую функцию с кодировкой base64. Это работает нормально. Я установил заголовок следующим образом.

 $headers = "MIME-Version: 1.0" . "rn";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "rn";
$headers .= "Content-Transfer-Encoding:base64" . "rn"; 
// More headers
$headers .= 'From:'.$from. "rn";
$htmlcode = rtrim(chunk_split(base64_encode($msg))); 
$ret=mail($to,$subj,$htmlcode,$headers);
  

Теперь я хочу установить тот же параметр заголовка в CodeIgniter. Я попробовал с опцией в конфигурации.

 $_configure['_encoding']="base64";
$email= new Email($config);    
  

Но это не работает. Как установить заголовок, подобный приведенному выше, в CodeIgniter?

Редактировать:

В настоящее время используется только класс электронной почты CodeIgniter.

Комментарии:

1. @Mob Я получил закодированное письмо. Но для предыдущего я получаю электронное письмо с тем, что я ввел.

2. Почему вы не используете класс электронной почты CodeIgniter?

3. В настоящее время я использую только это. Но я не знаю, как достичь вышеуказанного формата заголовка.

Ответ №1:

 $config['_bit_depths'] = array('7bit', '8bit', 'base64');
$config['_encoding'] = 'base64';
  

Ответ №2:

Вы должны расширить класс Email, чтобы добавить это, это довольно легко сделать.

Когда вы это сделаете, добавьте общедоступную функцию в _set_header, поскольку это генерирует заголовок электронного письма для вас.

Не тестировалось, но что-то вроде этого:

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 

class MY_Email extends CI_Email {

    public function __construct()
    {
        parent::__construct();
    }

    public function set_header($header, $value) {
        parent::_set_header($header, $value);
    }
}
  

затем в вашем коде электронной почты что-то вроде:

set_header(‘_encoding’, ‘base64’);