首页 > 解决方案 > 为什么我无法使用 tls 连接到 gmail SMTP 服务器?

问题描述

我的目标是使用 PHPMailer 给自己发送一封电子邮件。我使用 Gmail SMTP 作为开始(我启用了不太安全的应用程序访问并禁用了两因素身份验证),并尝试从本地主机连接(使用 MAMP)。这是我的代码:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'PHPMailer-master/src/Exception.php';
require 'PHPMailer-master/src/PHPMailer.php';
require 'PHPMailer-master/src/SMTP.php';
$mail = new PHPmailer(true);
try {
  $mail->SetFrom('myemail','myname');
  $mail->AddAddress('myemail','mynickname');
  $mail->Body = 'There is a great disturbance in the Force.';
  $mail->isSMTP();
  $mail->Host = 'smtp.gmail.com';
  $mail->SMTPAuth = TRUE;
  $mail->SMTPSecure = 'tls';
  $mail->Username = 'myemail@gmail.com';
  $mail->Password = 'mypassword';
  $mail->Port = 587;
  $mail->Send();
}
catch (Exception $e){
  echo $e->errorMessage();
}

这给了我一个 SMTP connect() failed 错误。我检查了故障排除页面,发现当防火墙或 DNS 故障时会发生此错误,因此我尝试完全禁用计算机上的防火墙,但无济于事。可能是什么问题呢?

值得注意的是,我曾尝试使用 cmd 连接到 smtp 服务器telnet smtp.gmail.com 587,但也没有用。这里可能是什么问题?

编辑:我更改$mail->SMTPSecure = 'tls';为; 并分别有效。为什么 tls 不起作用?$mail->Port = 587;$mail->SMTPSecure = 'ssl'$mail->Port = 587;

标签: phpnetworkingnetwork-programmingphpmailer

解决方案


利用

$mail->SMTPDebug = 4;

try{帮助缩小错误范围的部分


推荐阅读