使用标准Codeigniter时
mail->send()
它只返回TRUE或FALSE。但是,我有要求以不同方式处理某些SMTP返回代码。我可以解析调试文本信息,或者以某种方式尝试覆盖Codeigniter的邮件处理程序。有没有直接和优雅的方式来做到这一点?
提前致谢。
答案 0 :(得分:3)
我不认为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
答案 1 :(得分:2)
如果您使用sendmail
发送电子邮件,则可能无法在稍后获取SMTP返回代码。
获得退回的方式(我猜是?)是在您的外发电子邮件中添加Return-Path
并选择由procmail
配备的电子邮件收件箱,以便您可以管理反馈电子邮件回到PHP解析它。
如果您需要有关上述内容的详细信息,请与我们联系。