0

我对 Pear Mail 有这个愚蠢的问题:

我的脚本看起来像这样:

$params['host'] = $config['smtp_host'];
        $params['port'] = $config['smtp_port'];
        $params['auth'] = $config['smtp_auth'];
        $params['username'] = $config['smtp_username'];
        $params['password'] = $config['smtp_password'];
        $params['timeout'] = 10;

        $headers['From'] = 'Administrator <admin@admin.com>';
        $headers['To'] = '"'. $to .'" <' . $to . '>';
        $headers['Subject'] = "Bla";
        $headers['Content-Type'] = "text/plain; charset=\"UTF-8\"";
        $headers['Content-Transfer-Encoding'] = "8bit";
        $mail_object = & Mail::factory('smtp', $params);
        $send = $mail_object->send($to, $headers, "hi");
        if(PEAR::isError($send))
            echo $send->getMessage();

尽管设置了超时我的脚本挂起大约 60-120 秒,没有错误,什么都没有 - 电子邮件没有被发送。我不知道如何以任何方式调试它;/ 无法弄清楚我做错了什么。变量 $to 被传递给该代码内部的函数。我知道该对象正在被退回。

我如何检查出了什么问题?

提前致谢 :)

4

1 回答 1

0
  1. 确保您只尝试发送一封邮件进行调试
  2. 安装并激活xdebug
  3. 在脚本的开头,放一个xdebug_start_trace('/tmp/foo.xt')
  4. 运行你的脚本
  5. 在文本编辑器中查看函数跟踪文件。最后一行将显示哪个命令挂起。

我怀疑是网络连接挂了。您可以运行 wireshark 来查看发送了哪些数据包,以及是否收到响应。

于 2013-02-27T09:35:07.000 回答