Moin!
Du musst einfach das Ergebnis von Mail() abfragen und wenn es false gewesen sein sollte ggf. zählen.
Was mag das bringen?
Wenn mail() false zurückgibt, dürfte irgendetwas ziemlich schlimmes passiert sein. Sowas wie "es gibt keinen lokalen SMTP-Server, der die Mail entgegengenommen hat" oder "der lokale SMTP-Server hat mit irgendeinem der Funktionsargumente ein Problem, möglicherweise mit der Empfängeradresse".
Ansonsten gibt mail() mit funktionierenden Adressen immer brav true zurück - die eigentliche Auslieferung der Mails übernimmt dann der lokale SMTP-Server (zumindest unter Unix - davon gehe ich aber als Szenario mal aus). Und der wird sich ggf. per Mail beim Postmaster (oder wer sonst dafür zuständig ist) melden, wenn Mails dauerhaft unzustellbar sind (Postfach voll, User nicht existent, sonstige SMTP-Fehlermeldung), und ansonsten eine gewisse Zeit lang die Zustellung versuchen (Connection Timeout, "Try again later",...), bis auch diese Zeit abgelaufen und der Versand somit als endgültig fehlgeschlagen bewertet wird (typische Zeit dafür: 5 Tage).
Danach schreibst Du sleep(1) und schon gilt die Timeout-Einstellung nicht mehr. Sie fängt von vorne an zu zählen.
Wenn 480 Mails ohne Probleme durchgehen, und dann die Max-Execution-Time aufgebraucht ist, würde das nicht viel bringen.
- Sven Rautenberg
"Habe den Mut, dich deines eigenen Verstandes zu bedienen!" (Immanuel Kant)