【问题标题】:Could not connect to SMTP host. Message could not be sent无法连接到 SMTP 主机。无法发送消息
【发布时间】:2016-09-27 20:39:13
【问题描述】:

当我从服务器发送电子邮件时,它给了我两个错误 -

SMTP 错误:无法连接到 SMTP 主机。无法发送消息。 邮件程序错误:SMTP 错误:无法连接到 SMTP 主机。

我在堆栈溢出的另一个答案上发现了许多提示,但不起作用。我尝试了端口号 465/587/65。如果我设置端口 587,即使下面的代码在我的本地系统上也能正常工作。但在服务器中,它不起作用。

require('class.phpmailer.php');
require('class.smtp.php');

$mail = new PHPMailer();

$mail->IsSMTP();      
$mail->SMTPSecure = "ssl";
$mail->SMTPAuth = true;
$mail->Host = "smtp.gmail.com"; 
$mail->Username = "FromEmailId";
$mail->Password = "Password"; 
$mail->Port = 465;
$mail->From = "FromEmailId";
$mail->AddAddress("ToEmail");      
$mail->IsHTML(true);                                  
$mail->Subject = "Here is the subject";
$mail->Body    = "This is the HTML message body <b>in bold!</b>";

if(!$mail->Send())
{
   echo "Message could not be sent. <p>";
   echo "Mailer Error: " . $mail->ErrorInfo;
   exit;
}
echo "Message has been sent";

【问题讨论】:

  • 我认为这是服务器端错误
  • @Yogesh。感谢回复。但是我该如何解决呢?
  • 亲爱的我也面临这个问题,但没有得到任何解决方案
  • 你是什么主机?他们可能阻止了外发 SMTP(我知道这是因为我用于 VPS 的主机之一阻止了所有外发 SMTP,我必须要求他们针对特定情况取消阻止它。)。
  • 你能用你肯定知道是正确的数据来测试这个吗?你能用其他 SMTP 服务器(如 yahoo)来测试吗?

标签: php email phpmailer


【解决方案1】:

在调试模式下尝试phpmailer检查错误

$mail->SMTPDebug = 3;       // Enable verbose debug output

【讨论】:

  • 能否请您详细说明您的答案,添加更多关于您提供的解决方案的描述?
  • 在发布的答案中,这是唯一朝着正确方向前进的答案,但应该是评论。
  • @Synchro 同意你的看法。这条简单的线帮助您调试 phpmailer。它基本上给出了详细的错误来帮助您跟踪错误或错误。
  • 感谢您回复 Ranjeet。我和我的朋友讨论过,他告诉我,需要在 Godaddy 服务器上做一些设置(配置邮件)。这就是它不起作用的原因。
【解决方案2】:

首先注销您的 gmail 帐户

然后打开这个网址 use this yrl

点击继续按钮

下一步 更改端口和 SMTP 安全

$mail->SMTPSecure = "tls";
$mail->Port = 587;

【讨论】:

  • 感谢 Yogesh 的回复。我和我的朋友讨论过,他告诉我,需要在 Godaddy 服务器上做一些设置(配置邮件)。这就是为什么它不起作用。我尝试更改 SMTPSecure 和端口,但它不起作用。
  • @PuneetChawla 尝试这个过程一次......因为在我的情况下我遇到了同样的问题,但是使用这个过程我发送邮件没有任何错误
  • 好的,yogesh。我会尽快尝试,一定会让你知道。
  • 这行不通;问题是 OP 在 GoDaddy 上,与谷歌设置无关。
  • @Synchro 我知道,但在我的情况下它工作得很好:)
【解决方案3】:

Gmail 帮助:

还是不能发邮件?

如果您尝试在端口 465(使用 SSL/TLS)和端口 587(使用 STARTTLS)上配置 SMTP 服务器,但仍然无法发送邮件,请尝试将您的 SMTP 配置为使用端口 25(使用 SSL/TLS)。

【讨论】:

【解决方案4】:

这个问题没有进行基本的搜索,错过了后来在 cmets 中提到的一条重要信息:OP 正在使用 GoDaddy。众所周知,GoDaddy 会阻止出站 SMTP,因此任何有关切换端口号或安全协议的建议都无济于事。您需要阅读 other questions on GoDaddy's mail handling,并阅读他们的支持文档,这将推动您使用 GoDaddy 的邮件服务器(使用 securehosting 域)或通过 localhost 作为中继。 PHPMailer troubleshooting guide 也涵盖了所有这些内容。

今后,请在发帖前进行搜索,如SO guidelines

【讨论】:

    猜你喜欢
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 2012-05-24
    • 2012-06-17
    • 2018-09-01
    相关资源
    最近更新 更多