- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我能够使用 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 的处理。也许我缺少关于文件流的一些基本知识。
谢谢。
最佳答案
循环挂起的原因是因为 feof 永远不会返回 true,因为在服务器关闭连接之前套接字一直处于事件状态。如果您等待的时间足够长,最终循环会随着服务器回答“* BYE 连接已关闭”而中断。
fputs($sock,"a LOGIN user@gmail.com password\r\n");
如果你在登录命令之前使用了“a”,我使用的方法可能会非常不愉快,所以将“a”更改为“1a23ef”或其他任何东西,这样在获取数据时你就不会打破循环为时过早,还请记住在每个新命令之前使用相同的键:
fputs($sock,"a1fd20 LOGIN user@gmail.com password\r\n");
while(true){
$r = fgets($sock);
$out .= $r;
if(strpos($r, 'a1fd20 ') === 0){
break;
}
}
echo $out;
这与 FETCH 1:1 RFC822 命令一起工作得很好,但是如果正在获取的消息在位置 0 中有字符串“a1fd20”,循环仍然会过早中断(我认为无论如何都不会发生) !)。
关于php - 在 php 中使用 fsockopen 与 gmail imap 服务器通信时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7196142/
我在服务器上有一个简单的 php 脚本,它使用 fsockopen 连接到服务器。 \n"; } else { echo fgets($fp, 1024); fclose($fp);
我正在使用 fsockopen() 调用列表中的多个连接,以查看各种 ip/host 和端口的在线状态 ... = 1) { $status = 'offline'; } else { $status
我正在编写一个程序,该程序将从使用php建立套接字连接的WHOIS服务器中检索有关特定IP或域名的信息。我使用fsockopen()函数建立套接字连接,该套接字连接实际上创建了一个文件。运行良好。但是
我有代码: $f = fsockopen('mail.myserver.com', 110); //POP3 echo fgets($f, 4096) . ''; fputs($f, "USER lo
我们的一位客户说他们有一个非常简单的脚本,它使用 fsockopen() 来确定服务器是否在线。他们说直到最近它通过我们在他们的网站上运行良好,但最近刚刚停止工作,所以我假设这是一个设置。 我的第一个
很难说出这里问的是什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或言辞激烈,无法以目前的形式合理回答。如需帮助澄清此问题以便可以重新打开,visit the help center . 8年前关闭
$sock = fsockopen($url_parts['host'], (isset($url_parts['port']) ? (int)$url_parts['port'] : 80), $e
它不检查RDP的端口= 3389,对于ftp是,Web是,telnet是谁能告诉我为什么它不能仅用于RDP端口3389 if($type == "rdp") { $sql = mysql_qu
背景:我必须创建一个普通站点,它接受传入的已发布 XML 并通过套接字连接将 XML 发送到服务器,然后显示从服务器发回的 XML。简单易行。 问题:我在使用 fsockopen() 连接到服务器并发
我正在尝试使用特定查询信息对域执行 ping 操作。 这应该非常简单,但它不起作用。 那么...为什么如此简单的 fsockopen php 命令不起作用?! fsockopen('http://ww
我对 php fsockopen 命令有疑问。 我需要在服务器上打开一个套接字连接来实现消息交换。如果服务器没有从我的(客户端)端收到任何东西,它会在一定的超时后关闭连接(我不知道确切的时间也无法更改
折腾了半天,终于把reCAPTCHA改成了这个函数: function _recaptcha_http_post($host, $path, $data, $port = 80) { $req =
我有一个 Node websockets 服务器,所有设置都带有运行良好的聊天服务。但我希望 LAMP 服务器能够定期向连接到 websocket 服务器的用户发送消息。 (响应用户浏览器操作或 cr
不断发送一些数据点(目标是每秒一次),在 PHP 中使用无限循环的 POST 请求。数据高度依赖于时间。如果超时,我不关心丢失的数据,我只想快速移动到下一个数据点。 我最初使用 file_get_co
我正在尝试在 PHP 中执行下行带宽速度测试。我不知道为什么 wget 会以 400 Mbps 的速度下载 1 MB 的数据,而 fsockopen 会以 170 Mbps 的速度下载。我正在使用 f
我正在开发一个项目,使用这个 php 类验证多个电子邮件 ID -> php-smtp-email-validation .当我输入最多 10 个电子邮件 ID 时,代码工作正常,大约需要 30-40
1、前言 本文利用 fsockopen() 函数,编写一个功能简单的端口扫描器。 2、关键技术 本实例的端口号是固定的,通过对数组的遍历,利用 fsockopen() 函数连接,如果连接成功,
我用 fsockopen() 和 fread() 读取了一些 URL,我得到了这种数据: asd d asd 哪个是对的!那么,到底哪里错
我正在尝试访问 http://www.example.com:4380/apid/request?method=getXMLTable&name=1&ui=UI&id=12345 .它应该以 XML
这很奇怪,在某些页面上它会很好地返回 HTML,而在其他页面上它会在返回的字符串的开头和结尾添加数字( $out )。 function lookupPage($page, $return = tru
我是一名优秀的程序员,十分优秀!