4

使用标准 Codeigniter 时

mail->send()

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

提前致谢。

4

2 回答 2

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

于 2012-06-12T13:38:20.197 回答
2

如果您正在使用发送电子邮件,sendmail您可能无法获得 SMTP 返回代码,直到稍后。

获得退回邮件的方法(我猜?)是Return-Path在您的外发电子邮件中添加一个并选择一个由 管理的电子邮件收件箱procmail,这样您就可以将反馈电子邮件通过管道传回 PHP 进行解析。

如果您需要有关上述内容的更多详细信息,请告诉我。

于 2012-06-12T13:35:57.700 回答