Không ai dường như thực sự tìm thấy một câu trả lời dứt khoát, vì vậy tôi đã làm một số đào bới xung quanh và phát hiện ra lý do tại sao.
trong hệ thống/thư viện/Email.php, cái nhìn đầu tiên tại dòng 1552:
if (! mail($this->_recipients, $this->_subject, $this->_finalbody, $this->_header_str, "-f ".$this->clean_email($this->_headers['From'])))
có vẻ như để gửi tất cả mọi thứ tất cả peachy như thế nào. Tôi cũng có các triệu chứng giống hệt nhau. Để xem tôi có phát điên hay không, tôi đã chèn ngay trước khi ...
mail($this->_recipients, $this->_subject, $this->_finalbody)
vì vậy, về cơ bản, tôi đã xóa tất cả các tiêu đề và để PHP đặt mặc định. Chơi lô tô! Nếu không có tiêu đề của CI, nó hoạt động. Với các tiêu đề CI, nó không. Vậy đo la cai gi?
Đào xung quanh một số chi tiết khác, tôi đã tìm đến nơi html được khởi tạo và sử dụng. Hóa ra nó không thực sự làm bất cứ điều gì cho đến khoảng 1046, nơi nó xây dựng cơ thể thông điệp.
từ dòng 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;
}
Flipping send_multipart giữa TRUE và FALSE sẽ làm cho công việc lớp đường bưu điện hoặc không hoạt động.
Nhìn qua Code Ignitor's email class docs không hiển thị gì cả. Đi tới dòng 52:
var $send_multipart = TRUE; // TRUE/FALSE - Yahoo does not like multipart alternative, so this is an override. Set to FALSE for Yahoo.
Vì vậy, bạn có nó. Có thể là lỗi trong cách CI thực hiện nhiều thông điệp? Tùy chọn cấu hình ẩn
$config['send_multipart'] = FALSE;
trong email.php có vẻ như là lừa.
bạn đang sử dụng giao thức nào? –
var $ protocol = "mail"; –
Tham chiếu trong biểu mẫu [PHP mail() không hoàn thành việc gửi e-mail] (https://stackoverflow.com/questions/43766055/php-mail-form-doesnt-complete-sending-e-mail) thường áp dụng với trình bao bọc CodeIgniter. – mario