This is a little bit difficult to answer without knowing what some of the values are for $header etc.
As stated in the php manual for the mail function "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."
I would start by checking that the recipient and from email addresses are set, are valid and exist.
Email is not always sent or received instantaneously. In fact, it seems that it's getting rarer all the time for Email to arrive within several minutes. The server on either end could be so busy that it has to cache the Email until it can catch up with the load. So don't be discouraged by this experience.