codeigniter が実際に送信する前に、どのようにして電子メール クラス エラーをキャッチできるのか疑問に思っています。
たとえば、関数が添付ファイルを見つけられない場合、フレームワーク内でスローされるエラーはないように見えます (少なくとも私が判断できることはわかります)。
$this->email->attach('/path/to/file.ext');
私はもう試した:
if( !$this->email->attach('/path/to/file.ext') ){
echo $this->email->print_debugger();
}
エラーはスローされません。
送信コマンドを発行した後、添付ファイルが添付されていないことに気付きました$this->email->send();
実際には、電子メールが送信されますが、明らかに添付ファイルも内容もなしで$this->email->message()
、空の電子メール本文だけが送信されます。
print_debugger() 関数は、send() 関数が呼び出されるまで実際には読み込まれないようです。意図的に存在しないファイルを指定すると、print_debugger() 関数はこのエラーをスローします (send() 関数が呼び出された後でのみ):
Unable to locate the following email attachment: /path/to/file.ext<br />Your message
has been successfully sent using the following protocol: sendmail<br /><pre>
User-Agent: CodeIgniter
Date: Thu, 23 May 2013 09:27:49 -0400
<snip>
send() 関数の前に print_debugger() 関数を呼び出すと、結果は空の配列のみになります (その呼び出しからの出力はちょうど<pre> </pre>
.
send() 関数がフレームワーク内から呼び出される前に、このエラーをキャッチしたいと考えています。
PHPをネイティブに使用してfile_existsをチェックできることは理解していますが、codeigniterがそれよりも早くエラーをスローするのはいいことです。
if( file_exists('/path/to/file.ext') ):
$this->email->attach('/path/to/file.ext');
else:
echo 'ERROR';
endif;
考え/提案/コメント?