Изменить на:

тключить сообщения об ошибках из класса PHPMailer? Я показываю свои собственные сообщения об ошибках и не хочу, чтобы пользователи видели ошибки, такие как «Ошибка SMTP: не удалось подключиться к узлу SMTP».

Мой код:http://pastie.org/1497819

Спасибо

 Pekka 웃25 янв. 2011 г., 21:35
phpmailer имеетverbose свойство. У меня нет под рукой копии, поэтому я не могу проверить точное имя, но это было что-то в этом роде - проверьте верхнюю часть файла класса, оно должно быть там
 Richard25 янв. 2011 г., 21:49
Я нашел $ ErrorInfo, но это не имеет значения, если я закомментирую строку. По-прежнему отображаются сообщения об ошибках.

Ответы на вопрос(8)

Вот еще одно решение:

ob_start(); //start output buffering to capture all output and prevent errors from being displayed
$delivery = $mail->Send();
ob_end_clean(); //erase the buffer and stop output buffering

Мне нужно было подавлять ошибки из функции JUtility :: sendMail в Joomla, которая использует PHPMailer за кулисами, поэтому приведенные выше ответы не сработали, но выходная буферизация сработала.

)), это улучшенная версия решения, предложенного Riccardo

В файле "class.phpmailer.php", внутри функции

public function Send()

найти линию

echo $e->getMessage()."\n";

и заменить это для этого

if ($SMTPDebug)
   echo $e->getMessage()."\n";

Таким образом, он будет показывать только сообщения об исключениях (или сообщения об ошибках), если вы работаете в режиме отладки.

Надеюсь, это поможет!! С уважением!!

 Susan12 сент. 2012 г., 09:14
Вы должны избегать редактирования файла class.phpmailer.php. Делает для сложных обновлений в будущем.

не могу изменить информацию заголовка - заголовки уже отправлены (вывод начался с /phpMailer/class.phpmailer.php), потому что мой возвращаемый json нуждается в заголовке ('Content-Type: application / json') ; И выдавал ошибку, потому что класс class.phpmailer.php напечатал на экране ошибку Invalid address: которая генерирует ошибку заголовка, так что решить ее было просто, она включается только в класс class.phpmailer.php в следующей строке Отладочная проверка и она сработала

Эта линия

Echo $ this-> Lang ('invalid_address'). ':'. $ Address;

Изменить на:

If ($ this-> SMTPDebug) {
       Echo $ this-> Lang ('invalid_address'). ':'. $ Address;
  }

Если ошибки поступают от звонка$mail->Send(); тогда вы можете сделать что-то вроде этого:

$oldErrorSetting = error_reporting(0); // temporarily disable warnings
$delivery = $mail->Send();
error_reporting($oldErrorSetting); // restore error setting

Это подавит ошибки PHP, возникающие при вызове Send.

Затем, чтобы получить ошибки PHPMailer и сделать с ними что-то приятное, вы можете использовать$delivery возвращаемое значение иErrorInfo:

if (!$delivery) {
    $errorDetails = $mail->ErrorInfo;
    print "<p>$errorDetails</p>\n";
}
 Richard26 янв. 2011 г., 01:01
Я не могу заставить его работать, я, должно быть, делаю что-то не так, я пытался реализовать твой код, но безуспешно. Посмотри пожалуйстаpastie.org/1497819 для моего оригинального кода.

что эта ветка старая и уже ответила, но я наткнулся здесь, потому что у меня была та же проблема, но я решил ее по-другому, поэтому я решил поделиться. ПРИМЕЧАНИЕ: я использую PHPMailer v5.1.

Когда вы создаете экземпляр класса PHPMailer, он принимает один необязательный аргумент - $ exceptions. Это говорит PHPMailer, если он должен генерировать исключения, если он встречается. По умолчанию используется значение false, что означает, что оно не выдает никаких исключений, а просто выводит его сообщения. Однако, если вы называете это как

  $mail = new PHPMailer(true);

Вы скажете это, чтобы бросить исключения. Затем вы можете поймать эти исключения и обработать их по своему усмотрению. Для меня это намного чище и элегантнее, чем возиться с исходным кодом или отключать отчеты об ошибках.

 CaptSaltyJack19 нояб. 2014 г., 00:26
Это лучший ответ. Согласовано.
 Murray Smith17 нояб. 2012 г., 02:06
Это лучший ответ ИМО, спасибо Хит.
//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2;
Решение Вопроса

В папке вашей библиотеки phpmailer откройте "class.phpmailer.php",

находить

public function Send()

внутри него прокомментируйте строку

echo $e->getMessage()."\n";
 Sunit14 апр. 2017 г., 11:12
$ mail-> SMTPDebug = 0; остановит все предупреждения / уведомления

не включает редактирование исходного файла класса.

$mail->SMTPDebug = false;
$mail->do_debug = 0;
 Thomas Williams08 сент. 2016 г., 10:29
В целях тестирования я выключил свой почтовый сервер, и хотя я добавил в эти строки $ mail = new PHPMailer (false); $ mail-> SMTPDebug = 0; $ mail-> do_debug = 0; Я все еще получаю строку, появляющуюся в консоли, говорящую, Не может создать экземпляр функции почты. Очень раздражает, так как он останавливает мой код JSON, и возвращаюсь в JQuery.

Ваш ответ на вопрос