White listing is one way but I would try one or two other things first.
Firstly are you sending all the necessary headers and are they correct? For example include a message id. Many generic mail hosts require this to be over a certain number of characters long. My mail id is a nine letter character alpha numeric followed by my web address. This address in turn corresponds to the email address I have sent the message from. According to RFC standards the you must set a from address. Some mail servers will require you to set a from field both in the headers and as a flag:
note their are no spaces after the -f
mail(to, subject, message, headers, '-firstname.lastname@example.org')
I include the following headers in all my mail, in the following order:
Sending from a mail server that is not blacklisted and following the above you should be succesful.
'Reply-to: email@example.com'.eol. //change if required different to from address
'Date: date(r)'.eol. //date using r format
'Organisation: Company name'.eol.
'X-Mailer: whatever you call your hand made mailer'.eol.
'X-Priority: 3 (normal)';
//You can add additional headers such as MIME hear
If you are on shared hosting it is possible that your hosts mail server has been blacklisted.
Hope that helps, if you need more help, just say.