📜  SMTP -> 错误:无法连接到服务器:连接被拒绝 (111)SMTP Connect() 失败. - PHP (1)

📅  最后修改于: 2023-12-03 15:05:13.822000             🧑  作者: Mango

SMTP -> 错误:无法连接到服务器:连接被拒绝 (111)SMTP Connect() 失败. - PHP

简介

本文将介绍 SMTP Connect() 失败的错误信息和产生原因,以及如何解决此错误。

当使用 PHP 中的 SMTP 函数发送邮件时,可能会遇到“SMTP Connect() 失败”的错误,导致无法连接到邮件服务器并发送电子邮件。此错误通常表示 SMTP 函数无法连接到指定的邮件服务器,并显示“连接被拒绝”的错误代码 111。

错误产生原因

这个问题通常是由以下几个原因引起的:

  1. SMTP 服务器地址不正确
  2. SMTP 端口号不正确
  3. 邮件服务器需要身份验证,但是未提供正确的用户名和密码
  4. 防火墙或其他安全措施导致连接被拒绝
解决方案

要解决此问题,请采取以下措施:

  1. 确认 SMTP 服务器地址和端口号是否正确。可以与邮件服务器管理员或网络管理员确认。
  2. 如果需要身份验证,请确保提供了正确的用户名和密码。
  3. 检查是否有防火墙或安全软件阻止了连接。如果是,则需要配置防火墙或安全软件以允许 SMTP 连接。
示例代码

以下是一个简单的示例代码,通过 PHP 中的 SMTP 函数发送邮件:

<?php
require_once "Mail.php";

$from = "sender@example.com";
$to = "recipient@example.com";
$subject = "Test email";
$body = "This is a test email.";

$host = "smtp.example.com";
$port = "587";
$username = "username";
$password = "password";

$headers = array (
    "From" => $from,
    "To" => $to,
    "Subject" => $subject
);

$smtp = Mail::factory("smtp", array(
    "host" => $host,
    "port" => $port,
    "auth" => true,
    "username" => $username,
    "password" => $password
));

$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
    echo "Error: " . $mail->getMessage();
} else {
    echo "Mail sent successfully.";
}
?>

在此示例代码中,我们使用了“smtp.example.com”作为 SMTP 服务器地址,端口号为“587”,需要身份验证,并提供了正确的用户名和密码。如果 SMTP 服务器连接成功并成功发送邮件,则将打印“Mail sent successfully.”。如果未连接到 SMTP 服务器,则将出现“SMTP Connect() 失败”的错误信息。