PHP Codeigniter:有一种优雅的方法来在邮件失败时获取SMTP返回码

时间:2012-06-12 12:43:01

标签: php codeigniter smtp

使用标准Codeigniter时

mail->send()

它只返回TRUE或FALSE。但是,我有要求以不同方式处理某些SMTP返回代码。我可以解析调试文本信息,或者以某种方式尝试覆盖Codeigniter的邮件处理程序。有没有直接和优雅的方式来做到这一点?

提前致谢。

2 个答案:

答案 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解析它。

如果您需要有关上述内容的详细信息,请与我们联系。