You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

000webhost服务器使用PHPMailer发信报SMTP connect() failed错误

问题排查与解决方法

核心原因

000webhost免费版默认封禁了对外请求的SMTP端口(包括你使用的587、465等),这是本地代码正常但服务器报错的最常见诱因。

具体解决方案

  • 方案1:使用000webhost自带的sendmail服务(推荐免费版用户使用)
    无需依赖外部SMTP端口,直接修改PHPMailer配置即可:
    1. 删除原有SMTP相关配置,将$mail->isSMTP();替换为$mail->isSendmail();
    2. 调整发件人配置:000webhost要求发件人邮箱必须是你在平台后台绑定的自有域名邮箱,不能直接使用用户提交的邮箱作为发件人,否则会被服务拦截。你可以保留用户邮箱作为回复地址,修改代码如下:
      // 替换为你在000webhost绑定的域名邮箱
      $mail->setFrom('noreply@your-domain.com', '你的站点名称');
      // 新增回复地址为用户提交的邮箱,收信后直接回复即可直达用户邮箱
      $mail->addReplyTo($email_from, $name);
      
    3. 其余HTML模板、收件人配置保持不变即可。
  • 方案2:仍需使用Gmail SMTP的排查步骤
    如果你坚持使用SMTP模式,可按以下顺序排查:
    1. 先测试服务器是否能连通Gmail SMTP端口,新建测试文件运行以下代码:
      <?php
      $conn = fsockopen('smtp.gmail.com', 587, $errno, $errstr, 10);
      if (!$conn) {
          echo "端口连通失败:$errstr ($errno),确认000webhost封了端口,只能用方案1或升级付费版";
      } else {
          echo "端口连通正常";
          fclose($conn);
      }
      ?>
      
    2. 若端口连通正常,检查Gmail账号配置:目前Gmail已经禁止普通密码登录第三方客户端,你需要先开启Google账号的两步验证,再生成应用专用密码,替换代码里的邮箱密码字段即可。
    3. 开启PHPMailer的调试模式排查细节:将$mail->SMTPDebug = 0;改为$mail->SMTPDebug = 2;,可以看到完整的连接错误日志,进一步定位问题。

内容的提问来源于stack exchange,提问作者Hazem Behairy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 04:51:02