This question already has an answer here:
How can I check a problem with mail being sent on my server? I run a simple test:
if(mail($to, $subject, $message)) {
echo 'Mail Sent';
}
which the test outputs the text; but, no mail ever arrives.
How can I go about tracking down the issue?
Following Myles, if you are on a Linux box, do this on the command line:
If you don't receive that email, you have a problem with the mail system on that box. That is a different question from the PHP question you asked.
If all the troubleshooting fails - now assuming that mail() returns false for reasons unknown - switch to a mailing script like PHPMailer that allows you to bypass mail() altogether and connect directly through SMTP, and offers an extensive debug mode. That way, you should be able to either set up a working solution or find the core of the problem.
Are you working on a live webserver here, or something more along the lines of a personal development sandbox? (Ie, your home machine?) If it's the latter, I can tell you that I've had a lot of problems in the past with my ISP (Cox) filtering my outbound mail ports. (They'll tell you that they don't do that, but I'm certain they do.)
I've also gotten some outbound messages that did make it through get caught up in the Cox mail spool for days before they were delivered to me.
I hope that's helpful.
The first place I'd start is the PHP error log, then your sendmail log. Also try sendmail from the command line and check the PHP configuration to make sure that is setup correctly for sending mail.
That is quite a long story. A few bullet points (Assuming that mail() returns true and there are no errors in the error log) :
For german speakers, I have written a quite exhaustive "what to do" on this issue some time ago. See here.
From the PHP manual:
Not sure how to take that next step, but that's an important point here.