При быстром взгляде я не смог найти способа отловить ошибки, сгенерированные mail()
. Самый простой способ - использовать error_get_last для сбора последней произошедшей ошибки. Тем не менее, вы должны сделать это один раз mail()
возвращает false
.
Другим возможным решением будет set_error_handler и когда вы отправляете почту, а затем сразу же удаляете обработчик после отправки почты. Затем ваш обработчик ошибок должен иметь возможность перехватывать любые ошибки / предупреждения / уведомления, которые произошли при отправке почты.
Использование библиотеки, такой как swiftmailer , будет гораздо более гибким, поскольку позволит легко отлавливать ее ошибки и исключения.
Если вы говорите об ошибках на принимающем сервере, то вам нужно внедрить VERP или какой-то алгоритм обнаружения отказов. PHPMailer-BMH может быть полезным в этом случае.