克服 PHPMailer 的“SMTP 错误:无法连接到 SMTP 主机”障碍
PHPMailer,一个流行的 PHP 邮件发送库,有时会抛出错误“SMTP 错误:无法连接到 SMTP 主机。”尽管通过 Thunderbird 等电子邮件客户端成功发送电子邮件,但仍可能遇到此问题。
要进行故障排除,请检查工作 Thunderbird 配置中使用的设置并将其与 PHPMailer 使用的设置进行比较。下表突出显示了主要差异:
Setting | Thunderbird | PHPMailer |
---|---|---|
Server Name | mail.exampleserver.com | SMTP_HOST |
Port | 587 | SMTP_PORT |
Username | [email protected] | SMTP_USER |
Secure Authentication | No | SMTPAuth |
Connection Security | STARTTLS | Not specified |
提供的 PHPMailer 代码:
$mail = new PHPMailer(); $mail->IsSMTP(); $mail->Host = SMTP_HOST; $mail->Port = SMTP_PORT; $mail->SMTPAuth = true; $mail->Username = SMTP_USER; $mail->Password = SMTP_PASSWORD; $mail->From = MAIL_SYSTEM; $mail->FromName = MAIL_SYSTEM_NAME; $mail->AddAddress($aSecuredGetRequest['email']); $mail->IsHTML(true);
虽然这些设置看起来与工作 Thunderbird 配置类似,但主要区别在于缺少PHPMailer 代码中的连接安全规范。要解决此问题,请将以下行添加到 PHPMailer 脚本中:
$mail->SMTPSecure = 'STARTTLS';
此行指定与 SMTP 服务器的连接应使用 STARTTLS 加密。完成此调整后,您的 PHPMailer 脚本应该可以成功发送电子邮件。
注意:如果您在使用 PHPMailer 5.6 或更高版本时遇到与证书验证失败相关的错误,您可以实施以下解决方法:
$mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) );
请记住,此解决方法应该是临时措施,您应该通过替换无效证书来解决基础证书问题有有效的。
以上是为什么我的电子邮件客户端工作时,我的 PHPMailer 代码无法连接到 SMTP 主机?的详细内容。更多信息请关注PHP中文网其他相关文章!