php使用fsockopen时,fwrite中的rn及n结束符导致,smtp.qq.com响应出现有关问题
php使用fsockopen时,fwrite中的\r\n及\n结束符导致,smtp.qq.com响应出现问题
<?php $t= time();$sk = fsockopen('tcp://smtp.qq.com',25, $errno, $errstr, 5); echo "sockect ok:".(time()-$t)."\n"; if ( ! is_resource($sk) ) exit('connect error:'. $errno." ".$errstr);//设置成阻塞模式 stream_set_blocking ($sk,1);//获取初次链接信息var_dump( fgets($sk,512) );//设置读超时stream_set_timeout( $sk, 3 );var_dump( stream_get_meta_data( $sk ) );fwrite($sk,"EHLO qidizi.com\n");//这个会导致超时,个人判断应该是qq在等待一行的输入结束符,但是\n却不是,应该是\r\n才是,就会卡在这里不输出提示,这个问题,在以前的版本,及当前测试时,的163.com上面都没有发现有这个问题//fwrite($sk,"EHLO qidizi.com\r\n");//正确的一行结束符\r\n,立刻会得到响应var_dump( fgets($sk,512).':'.(time()-$t) );//上面的不会超时echo "4:".(time()-$t)."\n<br />";var_dump( stream_get_meta_data( $sk ) );fclose($sk);
测试代码
可能qq的服务器在最近的更改中出现了变动,记得以前是可以使用\n来做为一行的结束符的,也就是一fwrite($sk,"kkk\n")就得到响应,fgets就能立刻成功,测试了一下163,\n是没有问题,最近发现qq的\n却出现问题,导致没有响应,fgets因为缓冲区没有内容导致异常,直到读超时.但是qq的换成了\r\n后就正常了.
所以smtp.qq.com,及smtp.exmail.qq.com都存在这个问题.
我开始以为是某些人说的变成了ssl的问题.却不是.现在的25端口还是可以正常使用的.

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

想了解更多關於開源的內容,請造訪:51CTO鴻蒙開發者社群https://ost.51cto.com運行環境DAYU200:4.0.10.16SDK:4.0.10.15IDE:4.0.600一、建立應用程式點擊File- >newFile->CreateProgect。選擇模版:【OpenHarmony】EmptyAbility:填寫項目名,shici,應用包名com.nut.shici,應用儲存位置XXX(不要有中文,特殊字符,空格)。 CompileSDK10,Model:Stage。 Device

Stream作業是Java8推出的一大亮點!雖然java.util.stream很強大,但還是有很多開發者在實際工作中很少使用,其中吐槽最多的一個原因就是不好調試,一開始確實是這樣,因為stream這樣的流式操作在DEBUG的時候,是一行程式碼,直接下一步的時候,其實一下就過了好多操作,這樣我們就很難判斷到底是裡面的哪一行出了問題。外掛:JavaStreamDebugger如果你用的IDEA版本比較新的話,這個插件已經是自備的了,就不需要安裝了。如果還沒安裝的話,就手動安裝一下,然後繼續下面

comcn和com的區別:1、comcn和com在含義等方面有區別,在訪問速度上沒有區別;2、comcn屬於國際域名,是全球通用頂級域名,供商業機構使用,而cn是中國的公司域名,國內商業機構,國內域名,必須企業才可以備案;3、搜尋的優先順序是cn先會去搜尋.cn,找到.cn伺服器後,再由.cn伺服器搜尋.com;4、cn由cnnic中國網路中心管理,com的管理機構在國外。

java8的stream取maxpublicstaticvoidmain(String[]args){Listlist=Arrays.asList(1,2,3,4,5,6);Integermax=list.stream().max((a,b)->{if (a>b){return1;}elsereturn-1;}).get();System.out.println(max);}注意點:這裡判斷大小是透過正負數和0值。而不是直接寫成if(a>b){returna;}elseretur

在linux中,stream是資料流的意思,就是以一定順序讀取的一串數據,所以資料流的方向就是資料流的讀取順序。 Linux系統把資料讀取後輸出的結果導入到其他檔案的過程稱為重定向資料流。 Linux下輸入一段命令並運行以後,螢幕裡會顯示兩種結果:運行成功結果即標準輸出、運行失敗結果即標準錯誤輸出;如果不做處理,它們都會顯示在螢幕上,而透過資料流重定向就可將其儲存到其他的文件中。

在PHP開發中,對文件的操作是非常常見的。一般情況下,我們需要進行檔案的讀取、寫入、刪除等操作。其中,檔案的讀取可以使用fopen函數和fread函數,檔案的寫入可以使用fopen函數、fwrite函數和fclose函數。本文將介紹php如何使用fopen、fwrite和fclose進行檔案操作。一、fopen函數fopen函數用來開啟文件,它的語法如下:r

在Microsoft365Roadmap網站(功能ID:186956)上的更新條目中,這家總部位於雷德蒙德的科技巨頭表示,此功能將賦予用戶編輯權限,以修剪影片中的開頭、結尾和任何片段。 「當您修剪影片時,Stream不會更改原始視訊檔案本身。相反,它只是向觀眾隱藏了修剪的部分,」更新中寫道。然後,您可以透過在StreamWeb應用程式中啟動影片並在接下來的幾個月內完成推出後點擊編輯按鈕來試用此功能。路線圖更新指出,推出將於「2023年3月」開始。但是,鑑於路線圖條目是在2023年11月21日新增的

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code
