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端口还是可以正常使用的.

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



Pour en savoir plus sur l'open source, veuillez visiter : 51CTO Hongmeng Developer Community https://ost.51cto.com Environnement d'exploitation DAYU200 : 4.0.10.16SDK : 4.0.10.15IDE : 4.0.600 1. Pour créer une application, cliquez sur Fichier- >nouveauFichier->CréerProgect. Sélectionnez le modèle : [OpenHarmony] EmptyAbility : indiquez le nom du projet, shici, le nom du package d'application com.nut.shici et l'emplacement de stockage de l'application XXX (pas de chinois, de caractères spéciaux ou d'espaces). CompileSDK10, modèle : étape. Appareil

La différence entre comcn et com : 1. Il existe des différences de signification entre comcn et com, mais il n'y a pas de différence de vitesse d'accès 2. comcn est un nom de domaine international et est un nom de domaine mondial de premier niveau utilisé par les institutions commerciales ; , alors que cn est un nom de domaine d'entreprise chinoise, les institutions commerciales nationales, les noms de domaine nationaux, seules les entreprises peuvent s'enregistrer ; 3. La priorité de recherche est que cn recherchera d'abord .cn. Après avoir trouvé le serveur .cn, le serveur .cn le fera. puis recherchez .com ; 4. cn est fourni par cnnic China Internet Center Management, l'organisation de gestion de com est à l'étranger.

Le fonctionnement du flux est un point fort de Java8 ! Bien que java.util.stream soit très puissant, de nombreux développeurs l'utilisent encore rarement dans leur travail réel. L'une des raisons les plus critiquées est qu'il est difficile à déboguer. C'était effectivement le cas au début, à cause des opérations de streaming. car le flux ne peut pas être utilisé dans DEBUG Lorsqu'il s'agit d'une ligne de code, lorsqu'il s'agit de l'étape suivante, de nombreuses opérations sont en fait passées en même temps, il nous est donc difficile de juger quelle ligne pose problème. Plug-in : JavaStreamDebugger Si la version d'IDEA que vous utilisez est relativement nouvelle, ce plug-in est déjà inclus et n'a pas besoin d'être installé. S'il n'est pas encore installé, installez-le manuellement, puis continuez ci-dessous.

Le flux de java8 prend 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);}Remarque : la taille est déterminée ici par des nombres positifs et négatifs et des valeurs 0. Au lieu de l'écrire directement if(a>b){returna;}elseretur

Dans le développement PHP, les opérations sur les fichiers sont très courantes. Dans des circonstances normales, nous devons effectuer la lecture, l'écriture, la suppression et d'autres opérations de fichiers. Parmi elles, la fonction fopen et la fonction fread peuvent être utilisées pour lire le fichier, et les fonctions fopen, fwrite et fclose peuvent être utilisées pour écrire le fichier. Cet article présentera comment PHP utilise fopen, fwrite et fclose pour effectuer des opérations sur les fichiers. 1. Fonction fopen La fonction fopen permet d'ouvrir des fichiers. Sa syntaxe est la suivante : r.

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

Préface JavaStream est un puissant outil de traitement de données qui peut aider les développeurs à traiter et à transformer les flux de données rapidement et efficacement. L'utilisation des opérations Stream peut grandement simplifier le code, le rendant plus lisible et maintenable, améliorant ainsi l'efficacité du développement. filter() : conserve les éléments qui répondent aux conditions basées sur le prédicat spécifié. map() : mappe chaque élément en fonction de la fonction spécifiée et génère un nouveau Stream. flatMap() : mappe chaque élément sur un Stream, puis concatène ces Streams en un Stream. distinct() : renvoie un flux dédupliqué. trié() : pour Stre

Dans une entrée mise à jour sur le site Web Microsoft 365 Roadmap (ID de fonctionnalité : 186956), le géant de la technologie basé à Redmond a déclaré que la fonctionnalité donnerait aux utilisateurs des autorisations d'édition pour couper le début, la fin et tous les clips d'une vidéo. "Lorsque vous découpez une vidéo, Stream ne modifie pas le fichier vidéo d'origine lui-même. Au lieu de cela, il masque simplement la partie découpée au spectateur", indique la mise à jour. Vous pouvez ensuite essayer cette fonctionnalité en lançant une vidéo dans l'application StreamWeb et en cliquant sur le bouton Modifier une fois le déploiement terminé au cours des prochains mois. La mise à jour de la feuille de route indique que le déploiement débutera en « mars 2023 ». Cependant, étant donné que l'entrée de la feuille de route a été ajoutée le 21 novembre 2023
