使用以下代码我试图从Hotmail中获取电子邮件。 在我的系统localhost上,这段代码工作正常,但在我的托管服务器上,这段代码无效。
在托管服务器上启用IMAP。
PHP Warning: imap_open(): Couldn't open stream {imap-mail.outlook.com:993/imap/ssl}INBOX
CakePHP控制器代码:
$username = 'myusername@hotmail.com';
$password = 'myusernamepassword';
set_time_limit(3000);
/* try to connect */
$inbox = imap_open('{imap-mail.outlook.com:993/imap/ssl}INBOX',$username,$password) or die('Cannot connect to Mail Server: ' . imap_last_error());
/* grab emails */
$emails = imap_search($inbox,'UNSEEN');
/* if emails are returned, cycle through each... */
if($emails) {
/* begin output var */
$output = '';
/* put the newest emails on top */
rsort($emails);
/* for every email... */
$count = 1;
foreach($emails as $email_number) {
$head = imap_header($inbox, $email_number);
/* get information specific to this email */
$overview = imap_fetch_overview($inbox,$email_number,0);
$message = imap_body($inbox,$email_number,2);
$subject = $this->decode_imap_text($overview[0]->subject);
}
// echo $output;
}
/* close the connection */
imap_close($inbox);
答案 0 :(得分:4)
如果它在localhost上正常工作,则可能有端口993或者在防火墙等服务器上阻止了imap协议。(此错误的概率很高)
如果您有权访问托管服务器,请检查防火墙。否则联系托管管理员或寻找其他托管。
修改:通过imap_last_error,imap_errors和imap_alerts函数获取更详细的错误。