imap_open():无法在Yii控制器中打开流

时间:2014-03-12 09:41:14

标签: php email yii

我对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}”,“用户名”,“密码”)和收件箱打开正常,同样似乎适用于雅虎。但由于某些原因,我在连接到outlook.com或icloud.com电子邮件时遇到错误。

imap_open(“{imap-mail.outlook.com:993/ssl/novalidate-cert}”,“用户名”,“密码”)获取错误imap_open():无法打开流

真正奇怪的是,当我运行单独的php脚本时,我手动在shell中进行测试,使用相同的参数连接到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证书}

     

/无功/网络/..../控制器/ RegisterController.php(102)

1 个答案:

答案 0 :(得分:0)

尝试将其作为主机名

$hostname='{imap-mail.outlook.com:993/imap/ssl}INBOX';

并且您还预先检查了您的用户名