PHPMailer smtp连接丢失220

PHPMailer smtp连接丢失220,php,smtp,phpmailer,smtpclient,Php,Smtp,Phpmailer,Smtpclient,我通过PHPMailer连接到SMTP服务器时遇到问题 <?php $mail = new PHPMailer(); $mail->isSMTP(); $mail->SMTPDebug = true; $mail->Host = "ip.ip.ip.ip"; $mail->Port = "25"; $mail->Helo = ""; $mail->SMTPAutoTLS = false; $mail->SMTPSecure = ""; $mai

我通过PHPMailer连接到SMTP服务器时遇到问题

<?php
$mail = new PHPMailer();
$mail->isSMTP();

$mail->SMTPDebug = true;

$mail->Host = "ip.ip.ip.ip";
$mail->Port = "25";
$mail->Helo = "";
$mail->SMTPAutoTLS = false;
$mail->SMTPSecure = "";
$mail->SMTPAuth = false;
$mail->Timeout = 10;

$mail->From = "sender@example.com";
$mail->FromName = "Sender Name";

$mail->addAddress("receiver@example.com");

$mail->isHTML(true);
$mail->Subject = "Test";
$mail->Body = "<h1>Test</h1>";


if(!$mail->Send()) {
    echo $mail->ErrorInfo;
} else {
    echo "Mail sent...";
}
不要这样做:

$mail->Timeout = 10;
RFC2821在初始问候语上指定了300秒(5分钟)的超时,一些服务器在这里施加长延迟(称为“问候延迟”),专门用于捕获不符合要求的客户端,通常是垃圾邮件。PHPMailer使用其默认的
超时设置300秒来完全遵守这一点。如果你缩短它,你就阻止它等待足够长的时间。如果将其设置为300或保持默认设置,它是否工作


如果你说“但我不想在页面处理过程中等待那么久!”-欢迎来到SMTP世界-它不是为实时使用而设计的;使用本地邮件服务器中继来消除此延迟,让邮件服务器担心。

如果您询问是否可以在smtp服务器上执行命令,可以使用telnet进行测试,以验证是否可以执行命令,另一个观察结果是数据似乎为空。请添加$mail->AltBody=“test”$mail之后->Body@GuillermoAndresFuentesMoral数据不是空的!该代码适用于其他smtp服务器!我成功地测试了telnet。原因是响应延迟是由开始时延迟的220引起的。客户不理解以下任何回复。如您所见,首先是由于缺少220个问候语而导致超时。他们可能已将服务器配置为在发送问候语之前延迟10秒以上(以减少垃圾邮件)。在收到问候语之前发送helo/ehlo是违反rfc的,但您可能需要等待更长的时间。通过telnet,如果你连接并让它坐下,它最终会发送问候吗?@drew010否!在我发送任何东西之前。但是如果我发送了一些东西,它会立即回复220…好的。我会尽量等300秒。但我怀疑这不是问题所在。我的ip在远程smtp上被列为白名单,其他人无法连接。因此,他们会选择一个问候延迟来保护垃圾邮件,这将是非常令人惊讶的。但也许这是微软的默认功能,他们并没有改变它。我会尽力让你知道发生了什么事。
$mail->Timeout = 10;