我想知道如何在 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;
想法/建议/评论?