使用phpmailer的SMTP连接错误

使用phpmailer的SMTP连接错误,php,smtp,phpmailer,Php,Smtp,Phpmailer,我使用此代码使用smtp发送电子邮件: require 'phpmailer/class.phpmailer.php'; $mail = new PHPMailer(); // create a new object $mail->IsSMTP(); // enable SMTP $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only $mail->SMTPAut

我使用此代码使用smtp发送电子邮件:

require 'phpmailer/class.phpmailer.php';
 $mail = new PHPMailer(); // create a new object
  $mail->IsSMTP(); // enable SMTP
  $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
  $mail->SMTPAuth = true; // authentication enabled

  $mail->Host = "sr4.supercp.com";
  $mail->Port = 465; // or 587
  $mail->IsHTML(true);
  $mail->Username = "********";
  $mail->Password = "********";
  $mail->SetFrom("********");
  $mail->Subject = "Test";
  $mail->Body = "hello";
  $mail->AddAddress("****@gmail.com");
   if(!$mail->Send())
      {
      echo "Mailer Error: " . $mail->ErrorInfo;
        echo "<pre>";
        echo print_r($mail);
      }
      else
      {
      echo "Message has been sent";
      }
我花了整整一天的时间,但无法完成这项工作。请帮忙。 请参考此url了解更多错误详细信息:

类似于此问题

将端口更改为
25
应该可以工作: 我试图通过telnet:

$mail->Port = 465; // or 587
您正在设置:

$mail->SMTPSecure = 'ssl'; // or 'tls'
但是没有伴随的:

因此,您试图将未加密的数据发送到加密的连接,这将不起作用(这是15年前SMTP over SSL被弃用的原因之一)。587上的TLS更能抵抗这种情况


切换到端口25通常意味着您将完全放弃加密,这不是一个好的解决方案。

您使用的是旧版本的PHPMailer。如果设置
$mail->SMTPDebug=4,您还将获得更多关于连接状态的反馈我是空白的,因为这些设置正在工作,在不同的站点上没有任何正确的更改,但不是在其子域中,而是在我将端口编辑为25和$mail->SMTPSecure='tls'之后;它工作得很好。在smtp设置中,它是为465端口指定的,但在这里,我让它在25之前工作。无论如何,非常感谢你您可能需要向grabblaw.com的服务器管理员询问,为什么它在端口465上没有响应。正如Synchro所说,使用加密会更好,端口25通常不会,但如果您不打算传递敏感数据,这可能不是什么大问题。
$mail->Port = 465; // or 587
$mail->SMTPSecure = 'ssl'; // or 'tls'