Я столкнулся с проблемой нечетного восклицательного знака в электронной почте. Для этого я тестировал отдельную почтовую обработку с кодировкой base64. Это нормально работает. Я устанавливаю заголовок следующим образом.
$headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; $headers .= "Content-Transfer-Encoding:base64" . "\r\n"; // More headers $headers .= 'From:'.$from. "\r\n"; $htmlcode = rtrim(chunk_split(base64_encode($msg))); $ret=mail($to,$subj,$htmlcode,$headers);
Теперь я хочу установить тот же параметр заголовка в CodeIgniter. Я попробовал вариант с настройкой.
$_configure['_encoding']="base64"; $email= new Email($config);
Но это не сработает. Как установить заголовок, как указано выше в CodeIgniter?
Редактировать:
В настоящее время используется только класс CodeIgniter Email.
$config['_bit_depths'] = array('7bit', '8bit', 'base64'); $config['_encoding'] = 'base64';
Вы должны расширить класс электронной почты, чтобы добавить это, это довольно легко сделать.
Когда вы это сделаете, добавьте публичную функцию в _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');