mail() usually works pretty good for me out of the box but I've got a custom build (very simple) eCard system I put together for a client.
I would have used the phpmailer class but as of a few weeks ago the version out was giving this client's server a hard time.
All being said and done - the system is built and working fine but some emails are not receiving mail. Today I setup a simple test of the phpmailer class and ran it on the same emails that ARE NOT receiving the email and they DID receive it from phpmailer.
I can only attribute this to the fact that I'm using limited "headers" on my custom class.
I like to include, as a good practice, X-Priority in my headers. While all email messages seem to be equal they are not. For me an mail from a friend or from my website's contact form is more important than for example a newsletter, so depending on the project im working on i change the X-priority value, which btw ranges from 1 to 5, with 1 being high priority, 3 normal, and 5 low.