This is about the best you can do:
if (!mail(...)) {
// Reschedule for later try or panic appropriately!
}
http://php.net/manual/en/function.mail.php
mail()
returns TRUE
if the mail was successfully accepted for delivery, FALSE
otherwise.
It is important to note that just because the mail was accepted for delivery, it does NOT mean the mail will actually reach the intended destination.
If you need to suppress warnings, you can use:
if (!@mail(...))
Be careful though about using the @
operator without appropriate checks as to whether something succeed or not.
If mail()
errors are not suppressible (weird, but can't test it right now), you could:
a) turn off errors temporarily:
$errLevel = error_reporting(E_ALL ^ E_NOTICE); // suppress NOTICEs
mail(...);
error_reporting($errLevel); // restore old error levels
b) use a different mailer, as suggested by fire and Mike.
If mail()
turns out to be too flaky and inflexible, I'd look into b). Turning off errors is making debugging harder and is generally ungood.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…