CI電子メールのsend()関数は、trueまたはfalseのみを返します。送信が失敗した理由について、より詳細な理由を得る方法はありますか?私はSMTPを使用しています。Codeigniter電子メールのエラー処理
答えて
メールログを確認できます。メールのエラーが出た場合は、その理由を示すレコードが必要です。
システムに依存しますが、どこに配置されるのかわかりません。
CI電子メールクラスで電子メールログをどのように設定しますか? – samxli
あなたはさらに、電子メールのデバッガを使用して何が起こったのかを調べることができます:Codeigniter Email Class Referenceから
$r = $this->send();
if (!$r)
$this->email->print_debugger()
;
。
あなたは文字列としてデバッガ出力が必要な場合は、あなただけのoutput bufferで出力をキャッチすることができます:print_debugger()
機能が動作します
$errors = array();
... # Loop
$r = $this->send();
if (!$r) {
ob_start();
$this->email->print_debugger();
$error = ob_end_clean();
$errors[] = $error;
}
... # Loop end
が、それは底に電子メールヘッダーとメッセージを追加します。あなたが望むすべてが(両方の成功とエラーメッセージを含む)デバッグメッセージの配列がある場合は、次のように電子メールのクラスの機能を拡張検討することもでき:
<?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;
}
}
あなたにはこれを配置したいと思います
./application/librariesフォルダにMY_Email.phpという名前のファイルがあります。 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の "拡張ネイティブライブラリ" セクション、あなたはこれを行うことができます。
それは素晴らしいです。共有してくれてありがとう。 – hakre
私はすでに電子メールクラスのビットをオーバーライドしているので、このソリューションはかなり適しています。私はそれを試してみましょう! – samxli
@samxli - 電子メールアドレスをループしている間に、デバッガのメッセージを途中でクリアしたい場合に備えて、私のサンプルを更新しました。私は 'clear_debugger_messages'関数を追加し、詳細な例を提供しました。すべての試行が完了した後にすべてのデバッガメッセージを取得したい場合は、単にデバッグメッセージをクリアしないと、最後に完全な配列が得られます。 –
[ビルドインCIエラー処理ルーチンと設定](http://codeigniter.com/user_guide/general/errors.html)を利用していますか? – hakre
可能重複:http://stackoverflow.com/questions/5777352/error-when-sending-smtp-email-with-google-and-codeigniter – hakre
これが本番環境にある場合は、通常、すべてのエラーログをオフにします。エラー報告をnoneに設定しても、CIエラー処理ログ機能は動作しますか? – samxli