Функция PHP mail()
имеет статус ошибки в качестве возвращаемого значения функции, но она не обнаружит такого рода ошибки, потому что она только проверяет, было ли отправлено электронное письмо, но не получено.
(это потому, что он должен немедленно вернуть управление программе; он не может ждать возможного отказов, потому что они могут занять много времени - вы не хотите, чтобы ваша программа сиделаи подождать пять дней на случай, если электронное письмо будет возвращено, не так ли?)
Таким образом, единственный способ определить, было ли сообщение отклонено, - это иметь отдельную программу, которая проверяет почтовый ящик, на который будут отправлены сообщенияto.
Вы можете указать почтовый ящик для отказов, используя опцию -f
в строке параметров почты (см. справочную страницу PHP mail () для получения дополнительной информации об этом).
Затем попросите отдельную программу периодически проверять этот почтовый ящик на наличие ненадежных сообщений и при необходимости сообщать о них.(есть ряд библиотек PHP, которые позволяют вам проверять почтовый ящик; Google поможет вам здесь или заглянет в PEAR)
Определение того, какое это письмо было, будет зависеть от качества отказов.Вы определенно должны быть в состоянии увидеть адрес электронной почты получателя, но не сможете определить, какое это было электронное письмо, то есть сопоставить его с конкретным случаем, когда вы сначала вызвали функцию mail()
.
Надеюсь, это поможет.