یک مدت گذشت تا مدتی پیش مجبور شدم برایش وقت بگذارم و بهش گیر بدم که چرا اینطوری میشود تا اینکه فهمیدم Gmail، headerهایی که آخر هر سطر آنها یک \r(نشانه سر سطر) وجود دارد را نمی شناسد. بنابراین برای حل این مشکل باید آخر سطر هر بخش از header فقط \n(نشانه سطر جدید) وجود داشته باشد. البته ظاهرا بقیه میل سرورها با هر دو کار میکنند و چه \n استفاده کنید چه \r\n مشکلی پیش نمی آید. اگر اینطور باشد شما می توانید همیشه از \n استفاده کنید یا خط زیر را قبل از استفاده از تابع mail() بگذارید که اگر آدرس گیرنده Gmail بود تمام \r\n ها به \n تبدیل شود:
if (preg_match('/gmail/',$to)) $header = str_replace("\r\n","\n",$header);