【发布时间】:2014-04-16 08:13:56
【问题描述】:
我对 imap_open 函数有一个非常奇怪的问题,它连接到某些服务器但在某些服务器上失败。在 Yii 控制器中我有
$inbox = imap_open("{".$model->incoming_hostname .":" .$model->incoming_port
."/ssl/novalidate-cert}",$model->e_mail_username,$model->e_mail_password);
现在,当我提交参数以连接到 Gmail 帐户时,我得到了 imap_open("{imap.gmail.com:993/ssl/novalidate-cert}", "username", "password") 并且收件箱打开正常,雅虎似乎也一样。但由于某种原因,我在连接到 outlook.com 或 icloud.com 电子邮件时出错。
imap_open("{imap-mail.outlook.com:993/ssl/novalidate-cert}", "username", "password") 得到错误 imap_open(): 无法打开流
真正奇怪的是,当我运行我在 shell 中手动创建的单独的 php 脚本以使用相同的参数进行测试以连接到 outlook.com 电子邮件帐户时,它工作正常。此外,当我通过 Web 浏览器通过 apache 访问此脚本时,它也可以工作。所以这不是apache执行php代码的问题。但是为什么在 Yii 中会失败呢?
$hostname = '{imap-mail.outlook.com:993/ssl/novalidate-cert}';
$username = 'username';
$password = 'password';
/* try to connect */
$inbox = imap_open($hostname,$username,$password);
对如何跟踪此问题有任何建议吗?在 Yii 中,我无法通过调用 imap_last_error() 来查看可能是什么问题,因为 Yii 会立即显示警告的错误页面
PHP 警告
imap_open(): 无法打开流 {:993/ssl/novalidate-cert}
/var/www/..../controllers/RegisterController.php(102)
【问题讨论】: