Tratamento de erros por e-mail do Codeigniter

A function Enviar enviar () do CI simplesmente retorna verdadeira ou falsa. Existe uma maneira de obter uma razão mais detalhada sobre por que um envio falhou? Estou usando SMTP.

Você pode verificar melhor o que aconteceu usando o depurador de e-mail:

 $r = $this->send(); if (!$r) $this->email->print_debugger() ; 

Da Referência da Classe de E-mail do Codeigniter .

Se você precisa da saída do depurador como uma string, você pode apenas pegar a saída com um buffer de saída :

 $errors = array(); ... # Loop $r = $this->send(); if (!$r) { ob_start(); $this->email->print_debugger(); $error = ob_end_clean(); $errors[] = $error; } ... # Loop end 

A function print_debugger() funcionará, mas anexa o header e a mensagem do e-mail na parte inferior. Se tudo o que quiser é uma matriz da mensagem de debugging (que inclui mensagens de sucesso e de erro), você poderia considerar expandir a funcionalidade da class de e-mail da seguinte maneira:

 _debug_msg = array(); } public function get_debugger_messages() { return $this->_debug_msg; } } 

Você gostaria de colocar isso em um arquivo chamado MY_Email.php na sua pasta ./application/libraries. CodeIgniter irá reconhecer automaticamente a existência desta class e usá-la em vez de ser padrão.

Quando você deseja obter uma lista (matriz) de mensagens de debugging, então, você pode fazer isso:

 $this->email->get_debugger_messages(); 

Se você estiver enviando mensagens e não quiser include mensagens de debugging de tentativas anteriores, você pode fazer isso:

 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'; } 

Referência: seção “Extensão das Bibliotecas Nativas” de http://ellislab.com/codeigniter/user-guide/general/creating_libraries.html .

Você pode verificar seus registros de email. Se os erros de email, então você deve ter um registro dizendo por que lá.

Não tenho certeza de onde eles estarão localizados, embora isso dependa do seu sistema.