PHPMailer发送邮件,但将CLIENT/SERVER对话返回给浏览器

9
所以我在谷歌和Stackoverflow上搜索了一下,有点惊讶没有找到这个问题。
我正在使用XAMPP/localhost和PHPmailer来使用我的gmail电子邮件帐户发送电子邮件到我的雅虎帐户。所有的东西都运作得很完美,包括一个样本附件被发送和接收。
问题是我的浏览器显示了在“成功发送”消息之前的幕后处理的每个步骤的似乎是服务器/客户端的对话框。
样例输出在这里:
2014-02-04 05:44:36 SERVER -> CLIENT: 220 mx.google.com
ESMTP xv2sm62192389pbb.39 - gsmtp
2014-02-04 05:44:36 CLIENT -> SERVER: EHLO localhost
2014-02-04 05:44:36 SERVER -> CLIENT: 250-mx.google.com at your service, [171.6.91.113] 250-SIZE 35882577 250-8BITMIME 250-AUTH LOGIN PLAIN XOAUTH XOAUTH2 PLAIN-CLIENTTOKEN 250-ENHANCEDSTATUSCODES 250 CHUNKING
2014-02-04 05:44:36 CLIENT -> SERVER: AUTH LOGIN
2014-02-04 05:44:36 SERVER -> CLIENT: 334 VXNlcm5hbWU6
2014-02-04 05:44:36 CLIENT -> SERVER: a2hyZng0NDRAZ21haWwuY29t
2014-02-04 05:44:37 SERVER -> CLIENT: 334 UGFzc3dvcmQ6
2014-02-04 05:44:37 CLIENT -> SERVER: RnV0dXJlMTA= 
2014-02-04 05:44:38 SERVER -> CLIENT: 235 2.7.0 Accepted 
.
.  25 more lines of this stuff
.
2014-02-04 05:44:40 CLIENT -> SERVER: QUIT 
2014-02-04 05:44:40 SERVER -> CLIENT: 221 2.0.0 closing connection xv2sm62192389pbb.39 - gsmtp 
Message has been sent

我在这里加入了换行符,以使内容更易读,但屏幕上的输出结果是一个长字符串。

这是代码。我怎么才能抑制这个输出呢?

require_once "../phpmailer/class.phpmailer.php";

$mail = new \PHPMailer(true); 

$mail->IsSMTP();
$mail->Host       = "smtp.gmail.com";
$mail->Port       = 465;
$mail->SMTPDebug  = 2;
$mail->SMTPAuth   = true;
$mail->SMTPSecure = 'ssl';
$mail->Username   = "xxx@gmail.com";
$mail->Password   = "xxx";
$mail->SetFrom('xxx@gmail.com', 'Randy S');
$mail->WordWrap = 50;

$mail->AddAddress('xxx@yahoo.com', 'Randy');
$mail->Subject = 'PHPMailer Test Subject';
$mail->Body     = "Hi! \n\n This is my first e-mail sent through PHPMailer."; 
$mail->AddAttachment('upload/names.txt');      // attachment

if(!$mail->Send()){
echo "Mailer Error: " . $mail->ErrorInfo; 
} else {
echo "Message has been sent";
} 

抱歉,这是一个重复的问题。我使用了不同的词汇进行搜索,最终在这里找到了答案:https://dev59.com/i5nks4cB2Jgan1znsYF0 。SMTPDebug参数可以使用零'0'或'false'。 - khrfx4
当您下载类库时,请阅读自述文件...那里的信息非常基础并且在其中。 - M H
3个回答

19

请注释或删除此行代码,或将其设置为0

$mail->SMTPDebug  = 2; 

该代码用于显示错误和消息。

来自PHPMailer网站:

$mail->SMTPDebug = 2; //启用SMTP调试信息(用于测试)
// 1 = 错误和消息
// 2 = 仅有消息


谢谢您,先生。您的回答让我感到非常开心。谢谢! - always-a-learner

2

SMTPDebugclass.phpmailer.php 中定义如下。根据此,您应将 SMTPDebug 初始化为0。因此,任何命令或数据消息都不会显示。另外,您可以通过使用 PHPMailer 类的 ErrorInfo 字段来查看发生错误时的错误消息。

/**
 * SMTP class debug output mode.
 * Debug output level.
 * Options:
 * * `0` No output
 * * `1` Commands
 * * `2` Data and commands
 * * `3` As 2 plus connection status
 * * `4` Low-level data output
 * @type integer
 * @see SMTP::$do_debug
 */
public $SMTPDebug = 0;

1
我遇到了同样的问题,添加


$mail->SMTPDebug = false;

在邮件发送脚本中,代码执行到以下步骤:

after

$mail->WordWrap = 50;

它会工作


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接