Никто, похоже, действительно не нашел окончательного ответа, поэтому я немного покопался и выяснил, почему.
в system / library / Email.php, сначала посмотрим на строку 1552:
if ( ! mail($this->_recipients, $this->_subject, $this->_finalbody, $this->_header_str, "-f ".$this->clean_email($this->_headers['From'])))
кажется, что все персиковое.У меня были точно такие же симптомы.Чтобы увидеть, сошел ли я с ума, я вставил непосредственно перед ...
mail($this->_recipients, $this->_subject, $this->_finalbody)
, поэтому я удалил все заголовки и позволил PHP установить значения по умолчанию.Бинго!Без заголовков CI это работает.С заголовками CI это не так.Так что же это?
Еще покопавшись, я посмотрел, где инициализируется и используется html.Оказывается, он ничего не делает до 1046 года, когда он строит тело сообщения.
из строки 1048:
if ($this->send_multipart === FALSE)
{
$hdr .= "Content-Type: text/html; charset=" . $this->charset . $this->newline;
$hdr .= "Content-Transfer-Encoding: quoted-printable";
}
else
{
$hdr .= "Content-Type: multipart/alternative; boundary=\"" . $this->_alt_boundary . "\"" . $this->newline . $this->newline;
$body .= $this->_get_mime_message() . $this->newline . $this->newline;
$body .= "--" . $this->_alt_boundary . $this->newline;
$body .= "Content-Type: text/plain; charset=" . $this->charset . $this->newline;
$body .= "Content-Transfer-Encoding: " . $this->_get_encoding() . $this->newline . $this->newline;
$body .= $this->_get_alt_message() . $this->newline . $this->newline . "--" . $this->_alt_boundary . $this->newline;
$body .= "Content-Type: text/html; charset=" . $this->charset . $this->newline;
$body .= "Content-Transfer-Encoding: quoted-printable" . $this->newline . $this->newline;
}
Переключение send_multipart между TRUE и FALSE сделает класс почтыработает или не работает.
Просмотр документов класса Code Ignitor ничего не показывает.Переход к строке 52:
var $send_multipart = TRUE; // TRUE/FALSE - Yahoo does not like multipart alternative, so this is an override. Set to FALSE for Yahoo.
Итак, у вас это есть.Возможно ошибка в том, как CI делает составные сообщения?Скрытая настройка
$config['send_multipart'] = FALSE;
в email.php, похоже, помогает.