Функция CI Email send () возвращает только true или false. Есть ли способ получить более подробную информацию о том, почему отправка не удалась? Я использую SMTP.
Вы можете дополнительно проверить, что произошло, используя отладчик электронной почты:
$r = $this->send(); if (!$r) $this->email->print_debugger() ;
Из Справочника класса Email Codeigniter .
Если вам нужен вывод отладчика в виде строки, вы можете просто получить вывод с выходным буфером :
$errors = array(); ... # Loop $r = $this->send(); if (!$r) { ob_start(); $this->email->print_debugger(); $error = ob_end_clean(); $errors[] = $error; } ... # Loop end
Функция print_debugger()
будет работать, но она добавляет заголовок и сообщение электронной почты внизу. Если все, что вам нужно, это массив отладочного сообщения (которое включает в себя как сообщения об успехе, так и сообщения об ошибках), вы можете рассмотреть возможность расширения функциональности класса электронной почты следующим образом:
<?php class MY_Email extends CI_Email { public function clear_debugger_messages() { $this->_debug_msg = array(); } public function get_debugger_messages() { return $this->_debug_msg; } }
Вы хотите поместить это в файл с именем MY_Email.php в папку ./application/libraries. CodeIgniter автоматически распознает существование этого класса и использует его вместо его по умолчанию.
Когда вы хотите получить список (массив) отладочных сообщений, вы можете сделать следующее:
$this->email->get_debugger_messages();
Если вы зацикливаете сообщения и не хотите включать сообщения отладчика из предыдущих попыток, вы можете сделать это:
foreach ( $email_addresses as $email_address ) { $this->email->to($emai_address); if ( ! $this->email->send() ) { echo 'Failed'; // Loop through the debugger messages. foreach ( $this->email->get_debugger_messages() as $debugger_message ) echo $debugger_message; // Remove the debugger messages as they're not necessary for the next attempt. $this->email->clear_debugger_messages(); } else echo 'Sent'; }
Ссылка: раздел «Расширение родных библиотек» в http://ellislab.com/codeigniter/user-guide/general/creating_libraries.html .
Вы можете проверить свои почтовые журналы. Если ошибки почты возникли, тогда у вас должна быть запись о том, почему там.
Я не уверен, где они будут расположены, хотя это зависит от вашей системы.