Intereting Posts
Обходной путь вместо использования websockets / ajax-long-pulling Как я могу исправить флеш-флагом PHP-потокобезопасное / непоточное безопасное рассогласование? Отображение справа налево подключенных языков (таких как персидский и арабский) в GD – Возможная ошибка PHP Создание образа без сохранения его как локального файла простая система входа в систему spa / php / mysql / jquery Как удалить строку с помощью первичного ключа с использованием внешнего ключа из другой таблицы? Предотвращение прямого доступа к файлу, вызываемому функцией ajax Как использовать cURL & PHP для подмены ссылки? Корпус выключателя с тремя параметрами? Как предотвратить перезагрузку страницы после нажатия на гиперссылку, но перенаправить на эту страницу и выработать необходимый код, написанный там? Как удалить подстроку из строки с помощью PHP? PHP – Фильтрация по значению поля MySQL Ошибка MySQL: Неизвестный столбец в разделе where Публикация данных для самостоятельного использования с помощью jquery Doctrine2: лучший способ обработки многих-ко-многим с дополнительными столбцами в справочной таблице

PHPMailer, вернуть код SMTP

Я использую PHPMailer;

$oPM->SMTPDebug = 2; $oPM->Debugoutput = 'html'; if ( !$oPM->send() ) echo "Mailer Error: " . $oPM->ErrorInfo; else echo "Message sent!"; 

После $oPM->Send() я хотел бы получить код состояния SMTP, независимо от успеха / сбоя.

Играя с параметром SMTPDebug , я могу заставить его вернуть строку;

MAIL FROM command failed: 500 5.0.0 Envelope From Address of...

Я мог бы взять код из строки. Но действительно хотелось бы вернуть фактический код.

Возможно ли это, или я должен идти по маршруту strpos? Благодаря!

Вы не получите SMTP-код непосредственно из send() потому что PHPMailer не обязательно использует SMTP. Выход SMTPDebug не предназначен для использования в производстве; $mail->ErrorInfo сообщение об ошибке появится в $mail->ErrorInfo . Вы можете получить более точную информацию из экземпляра SMTP после вызова send :

 $mail->getSMTPInstance()->getError(); 

который возвращает такую ​​структуру:

 [ 'error' => '', 'detail' => '', 'smtp_code' => '', 'smtp_code_ex' => '' ] 

Кстати, ошибка 5.0.0, встроенная в ваш пример, совершенно бесполезна для диагностических целей – все это означает, что «это не сработало». К сожалению, вы обнаружите, что многие почтовые серверы являются просто мусором для правильной отправки сообщений об ошибках, особенно Exchange, поэтому, если вы хотите быть более точными, вы будете разбирать строки.