gpt4 book ai didi

php - SMTP Telnet和PHP无法从HELO中获得任何响应

转载 作者:行者123 更新时间:2023-12-03 11:54:21 25 4
gpt4 key购买 nike

好的,我第一次尝试使用php进行套接字编程,这是我一段时间以来一直想做的事情,但是由于我们对在工作中完成的应用程序的电子邮件退回跟踪不起作用而加快了速度,因此,现在我必须检查整个电子邮件地址,以确保其有效。

我已经学会了如何通过命令行使用telnet来验证电子邮件地址并发送电子邮件地址,而我对此没有任何问题。当我使用“HELO”命令与服务器进行通信时,我会崩溃。

但是我可能在错误的地方,因为我什至不知道它是否建立了telnet连接,但最后的var dump显示正在建立连接。

当我通过命令行进行telnet连接时,连接响应是相同的,除了“n6si3992361paw.22”之外,但我想这是每个连接的某种唯一标识符。

<?php

$target = "aspmx.l.google.com";
$port = 25;
$errno = "";
$errstr = "";
$timeout = 9;
$newline = "\n\r";
$logArray = array();

$connect = fsockopen($target, $port, $errno, $errstr, $timeout);
$smtpResponse = fgets($connect, 4096);
if(empty($connect)) {
$logArray["error"][] = "Failed to connect: $smtpResponse";
var_dump($logArray);
exit;
} else {
$logArray['connection'][] = "Connected to: $smtpResponse";
}
fputs($connect, "HELO" . $newLine);
$smtpResponse = fgets($connect, 4096);
$logArray['connection'][] = "$smtpResponse";
var_dump($logArray);

$ logArray的结果:
array(1) { ["connection"]=> array(2) { [0]=> string(57) "Connected to: 220 mx.google.com ESMTP n6si3992361paw.22 " [1]=> string(0) "" } }

最佳答案

您做了一个简单的错字(PHP变量名称区分大小写)。

比较一下:

$newline = "\n\r";

... 有了这个:
fputs($connect, "HELO" . $newLine);

使用 $newline,而不是 $newLine。然后就可以了。

而且,正如卡斯珀已经指出的那样,您对CRLF的顺序是错误的。使用 \r\n,而不是其他方式。

关于php - SMTP Telnet和PHP无法从HELO中获得任何响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14391445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com