Обработка ошибок электронной почты Codeigniter

Функция 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 .

Вы можете проверить свои почтовые журналы. Если ошибки почты возникли, тогда у вас должна быть запись о том, почему там.

Я не уверен, где они будут расположены, хотя это зависит от вашей системы.