我能够使用 php 中的 imap 函数以及命令行中的 openssl 进行通信,我只是想尝试在 php 中执行 fsockopen()。我的代码是:
<?php
$sock=fsockopen('ssl://imap.gmail.com', '993',$errno, $errstr);
if(!$sock){
echo $errstr;
}
else{
fputs($sock,"a LOGIN user@gmail.com password\r\n");
$out=fgets($sock,2000);
fclose($sock);
echo $out;
}
?>
问题是我在 $out 中只得到了服务器的第一个响应
* OK Gimap ready for requests from **.***.63.101 jj5if832612pbc.164
当我使用 fgets 的 while 循环更改代码时,它会继续加载,最终时间结束而没有显示任何内容。
<?php
$sock=fsockopen('ssl://imap.gmail.com', '993', $errno, $errstr);
if(!$sock){
echo $errstr;
}
else{
fputs($sock,"a LOGIN user@gmail.com password\r\n");
while(!feof($sock)){
$out.=fgets($sock,2000);
}
fclose($sock);
echo $out;
}
?>
我想在输入登录凭据后在 $out 中看到服务器的回复。我能够使用 openssl 从命令行查看我的电子邮件,所以我认为问题不在于我对 imap 的处理。也许我错过了一些关于文件流的基本知识。
谢谢。