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

PHPMailer 6.7.1无法发送邮件:SMTP客户端主机被拒绝求助

邮件发送失败排查求助

使用PHPMailer 6.7.1发送邮件失败,错误信息:

SMTP Error: The following recipients failed: wrobynson@gmail.com: : Client host rejected: Access denied

调试日志中未出现CLIENT -> SERVER: AUTH LOGIN步骤,设置SMTPSecure为'TLS'或'SSL'均出现相同错误。

调试内容

2023-08-26 11:14:19 Connection: opening to 10.52.202.210:587, timeout=300, options=array ( 'ssl' => array ( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true, ),)
2023-08-26 11:14:19 Connection: opened
2023-08-26 11:14:19 SERVER -> CLIENT: 220 mta1.inner.intraer ESMTP Postfix
2023-08-26 11:14:19 CLIENT -> SERVER: EHLO siop.cindacta1.intraer
2023-08-26 11:14:19 SERVER -> CLIENT: 250-mta1.inner.intraer250-PIPELINING250-SIZE 34603008250-VRFY250-ETRN250-STARTTLS250-AUTH LOGIN PLAIN250-AUTH=LOGIN PLAIN250-ENHANCEDSTATUSCODES250-8BITMIME250-DSN250 CHUNKING
2023-08-26 11:14:19 CLIENT -> SERVER: STARTTLS
2023-08-26 11:14:19 SERVER -> CLIENT: 220 2.0.0 Ready to start TLS
2023-08-26 11:14:19 CLIENT -> SERVER: EHLO siop.cindacta1.intraer
2023-08-26 11:14:19 SERVER -> CLIENT: 250-mta1.inner.intraer250-PIPELINING250-SIZE 34603008250-VRFY250-ETRN250-AUTH LOGIN PLAIN250-AUTH=LOGIN PLAIN250-ENHANCEDSTATUSCODES250-8BITMIME250-DSN250 CHUNKING
2023-08-26 11:14:19 CLIENT -> SERVER: MAIL FROM:<irsys.cindacta1@fab.mil.br>
2023-08-26 11:14:19 SERVER -> CLIENT: 250 2.1.0 Ok
2023-08-26 11:14:19 CLIENT -> SERVER: RCPT TO:<wrobynson@gmail.com>
2023-08-26 11:14:19 SERVER -> CLIENT: 554 5.7.1 <unknown[10.229.12.60]>: Client host rejected: Access denied
2023-08-26 11:14:19 SMTP ERROR: RCPT TO command failed: 554 5.7.1 <unknown[10.229.12.60]>: Client host rejected: Access denied
2023-08-26 11:14:19 CLIENT -> SERVER: QUIT
2023-08-26 11:14:19 SERVER -> CLIENT: 221 2.0.0 Bye
2023-08-26 11:14:19 Connection: closed
SMTP Error: The following recipients failed: wrobynson@gmail.com: <unknown[10.229.12.60]>: Client host rejected: Access denied

代码实现

$MAIL = new PHPMailer(true);

$MAIL->SMTPDebug = 3;

$MAIL->SMTPOptions = array(
    'ssl'   => array (
                    'verify_peer'       => false,
                    'verify_peer_name'  => false,
                    'allow_self_signed' => true
                )
);

$MAIL->From         = "irsys.cindacta1@fab.mil.br";
$MAIL->FromName     = "SIOP";
$MAIL->Host         = "10.52.202.210";
$MAIL->Port         = "587";
$MAIL->Username     = "irsys.cindacta1@fab.mil.br";
$MAIL->Password     = "*******";
$MAIL->SMTPSecure   = "";    //    'TLS' or 'SSL': same error

try {
    $MAIL->IsSMTP();                // set mailer to use SMTP
    $MAIL->IsHTML(true);            // set email format to HTML
    $MAIL->Subject = "Teste de envio de e-mail";
    $MAIL->Body = "Esta é uma mensagem de teste.";
    $MAIL->AddAddress("wrobynson@gmail.com");
    $MAIL->AddReplyTo("no-reply@siop1.decea.mil.br", "NAO RESPONDA");

    $MAIL->Send();
}
catch (Exception $e) {
    echo $MAIL->ErrorInfo;
}

问题分析与解决建议

1. 未触发SMTP认证

从调试日志可见,服务器明确支持AUTH LOGIN PLAIN认证,但代码未开启SMTP认证开关,导致PHPMailer跳过认证步骤直接发送收件人信息,这是日志中无AUTH LOGIN的原因。

修复方法:在代码中添加$MAIL->SMTPAuth = true;,建议放在$MAIL->IsSMTP();之后,确保开启SMTP认证。

2. 客户端主机被拒绝

错误信息<unknown[10.229.12.60]>: Client host rejected: Access denied指向两个可能:

  • 发送服务器IP(10.229.12.60)不在SMTP服务器(10.52.202.210)的允许发件白名单内,或被列入黑名单
  • 主机名siop.cindacta1.intraer无法被SMTP服务器反向解析,导致服务器识别为unknown

解决步骤:

  • 联系公司邮件系统管理员,确认10.229.12.60是否在SMTP服务器的允许发件列表中
  • 检查本地DNS配置,确保siop.cindacta1.intraer能正常反向解析到10.229.12.60
  • 若暂时无法解决解析问题,可尝试添加$MAIL->Helo = "siop.cindacta1.intraer";,强制指定EHLO发送的主机名,避免服务器识别为unknown

3. 额外配置优化

  • 587端口对应TLS加密,建议将$MAIL->SMTPSecure设置为'tls',开启认证后再测试
  • 内部邮件系统场景下可保留当前SMTPOptions的SSL配置,但外部邮件服务器不建议关闭证书验证

内容的提问来源于stack exchange,提问作者Walter Robynson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:30:05