#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’);