使用标准 Codeigniter 时
mail->send()
它只返回 TRUE 或 FALSE。但是,我需要以不同方式处理某些 SMTP 返回代码。我可以解析出调试文本信息,或者以某种方式尝试覆盖 Codeigniter 的邮件处理程序。有没有直接而优雅的方式来做到这一点?
提前致谢。
使用标准 Codeigniter 时
mail->send()
它只返回 TRUE 或 FALSE。但是,我需要以不同方式处理某些 SMTP 返回代码。我可以解析出调试文本信息,或者以某种方式尝试覆盖 Codeigniter 的邮件处理程序。有没有直接而优雅的方式来做到这一点?
提前致谢。
我认为 CodeIgniter 中没有内置机制。您可以做的是扩展 CI 电子邮件类并添加一个函数来公开受保护的_debug_msg
数组。
如果您查看电子邮件类的源代码,您会看到该print_debugger()
函数正在将_debug_msg
数组转换为字符串。因此,如果_debug_msg
有您要查找的内容,则无需解析任何字符串。
class MY_Email extends CI_Email {
public function __construct()
{
parent::__construct();
}
public get_msg()
{
if (count($this->_debug_msg) > 0)
{
return $this->_debug_msg;
}
else
{
return FALSE;
}
}
}
请参阅以下链接了解如何扩展 CI 库 http://codeigniter.com/user_guide/general/creating_libraries.html
如果您正在使用发送电子邮件,sendmail
您可能无法获得 SMTP 返回代码,直到稍后。
获得退回邮件的方法(我猜?)是Return-Path
在您的外发电子邮件中添加一个并选择一个由 管理的电子邮件收件箱procmail
,这样您就可以将反馈电子邮件通过管道传回 PHP 进行解析。
如果您需要有关上述内容的更多详细信息,请告诉我。