PHPMailer表单提交成功却输出SMTP调试信息问题咨询
解决PHPMailer提交表单时显示SMTP调试信息的问题
问题描述
使用PHPMailer处理表单数据并发送邮件到Gmail,邮件发送成功,但提交表单后页面除了显示成功提示,还会输出完整的SMTP交互调试信息,示例如下:
Error: 2024-03-01 13:49:23 SERVER -> CLIENT: 220 smtp.gmail.com ESMTP t15-20020a05600c128f00b0041290cd9483sm8333199wmd.28 - gsmtp 2024-03-01 13:49:23 CLIENT -> SERVER: EHLO localhost 2024-03-01 13:49:23 SERVER -> CLIENT: 250-smtp.gmail.com at your service, [94.204.18.156]250-SIZE 35882577250-8BITMIME250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8 2024-03-01 13:49:23 CLIENT -> SERVER: AUTH LOGIN 2024-03-01 13:49:23 SERVER -> CLIENT: 334 VXNlcm5hbWU6 2024-03-01 13:49:23 CLIENT -> SERVER: [credentials hidden] 2024-03-01 13:49:23 SERVER -> CLIENT: 334 UGFzc3dvcmQ6 2024-03-01 13:49:23 CLIENT -> SERVER: [credentials hidden] 2024-03-01 13:49:23 SERVER -> CLIENT: 235 2.7.0 Accepted 2024-03-01 13:49:23 CLIENT -> SERVER: MAIL FROM:<hevedym@mailinator.com> 2024-03-01 13:49:23 SERVER -> CLIENT: 250 2.1.0 OK t15-20020a05600c128f00b0041290cd9483sm8333199wmd.28 - gsmtp 2024-03-01 13:49:23 CLIENT -> SERVER: RCPT TO:<mail@email.com> 2024-03-01 13:49:24 SERVER -> CLIENT: 250 2.1.5 OK t15-20020a05600c128f00b0041290cd9483sm8333199wmd.28 - gsmtp 2024-03-01 13:49:24 CLIENT -> SERVER: DATA 2024-03-01 13:49:24 SERVER -> CLIENT: 354 Go ahead t15-20020a05600c128f00b0041290cd9483sm8333199wmd.28 - gsmtp 2024-03-01 13:49:24 CLIENT -> SERVER: Date: Fri, 1 Mar 2024 14:49:22 +0100 2024-03-01 13:49:24 CLIENT -> SERVER: To: "Admin@Tech" <mail@email.com> 2024-03-01 13:49:24 CLIENT -> SERVER: From: Tech Site Form <hevedym@mailinator.com> 2024-03-01 13:49:24 CLIENT -> SERVER: Subject: Contact Form Submission 2024-03-01 13:49:24 CLIENT -> SERVER: Message-ID: <yohFiOOx4dHFSoXEuNMC6Z7096yWAogVn4jdpkEdM@localhost> 2024-03-01 13:49:24 CLIENT -> SERVER: X-Mailer: PHPMailer 6.9.1 (https://github.com/PHPMailer/PHPMailer) 2024-03-01 13:49:24 CLIENT -> SERVER: MIME-Version: 1.0 2024-03-01 13:49:24 CLIENT -> SERVER: Content-Type: text/html; charset=iso-8859-1 2024-03-01 13:49:24 CLIENT -> SERVER: 2024-03-01 13:49:24 CLIENT -> SERVER: Name: Jordan Wallace<br>Email: hevedym@mailinator.com<br>Subject: Blanditiis officia n<br>Message: Suscipit sunt eu et 2024-03-01 13:49:24 CLIENT -> SERVER: 2024-03-01 13:49:24 CLIENT -> SERVER: . 2024-03-01 13:49:24 SERVER -> CLIENT: 250 2.0.0 OK 1709300964 t15-20020a05600c128f00b0041290cd9483sm8333199wmd.28 - gsmtp 2024-03-01 13:49:24 CLIENT -> SERVER: QUIT 2024-03-01 13:49:25 SERVER -> CLIENT: 221 2.0.0 closing connection t15-20020a05600c128f00b0041290cd9483sm8333199wmd.28 - gsmtp Message has been sent
解决方案
这是因为PHPMailer的SMTP调试模式处于开启状态,只需关闭调试即可:
- 找到你的PHPMailer初始化代码段
- 添加或修改
SMTPDebug参数为0,关闭所有调试输出:// 方式1:直接设置数值 $mail->SMTPDebug = 0; // 方式2:使用PHPMailer提供的常量(需确保引入了SMTP类) $mail->SMTPDebug = SMTP::DEBUG_OFF;
调试级别说明
PHPMailer提供4种调试级别,根据需求选择:
- 0:关闭调试(生产环境推荐)
- 1:仅显示客户端与服务器的消息摘要
- 2:显示完整的SMTP交互过程(当前问题中的状态)
- 3:显示更详细的调试信息,包括连接状态和数据包内容
另外检查代码中是否有手动输出调试信息的语句(如var_dump、echo),如果有也需要移除,确保页面只输出成功或失败提示。
内容的提问来源于stack exchange,提问作者Harris Don
相关产品推荐
相关产品推荐

