sending mail with php & escaping hotmails junk folder

JimmyJ picture JimmyJ · Oct 30, 2008 · Viewed 18.8k times · Source

I have been trying to get PEAR::mail to successfully deliver emails to hotmail users without being flagged as SPAM and ending up in the junk folder, i have no problems with yahoo/gmail only with hotmail.

google suggested that this is a common problem with hotmail and that possible causes can include

  • incorrect reverse DNS for main IP of the server
  • lack of SenderId/SPF records
  • being blacklisted

having checked all of the above i can only think of one other reason - incorrectly formatted headers ?

to test this theory i set up outlook to send email via the same address that PEAR::mail uses and sent a quick test - it delivered straight to my inbox

so i compared the headers from the email sent from PEAR::mail against the headers sent by Outlook and there are only a few differences - i have only listed the differences to save space (and peoples eyes)

PEAR::mail headers (not in outlook headers)

X-PHP-Script: www.example.com/register.php for [users ip address]

Outlook headers (not in PEAR::mail headers)

X-Mailer: Microsoft Office Outlook 11
Thread-Index: Ack6CWSQlgV8s6+6SWyifka2NNpB7g==
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3350

the only other differences that i can see are

  • the order of the From: and To: headers are reversed
  • and in the Received: section of the headers

Outlook

Received: from myhomehostname.com ([ip address] helo=simber) 
by mywebhostname.com with local (Exim 4.67)

PEAR::mail

Received: from apache by mywebhostname.com with local (Exim 4.67)

could these small differences in the headers be the cause or am i looking in the wrong place ? i knew this might be problematic hence why i chose to use the PEAR::mail class rather than rolling my own but now i really have no idea where to go with this, any help would be greatly appreciated.

Update: as per changelog's suggestion i have tried adding the MS headers to the PEAR::mail class and i have tried replacing PEAR::mail with PHPMailer (with & without the extra headers) - they all end up in the junk folder.

I am starting to believe that it may not be the headers afterall.

Update 2: i should have mentioned that the emails are just a registration confirmation to validate the email address the user signed up with - no mailshots etc so our volume is extremely low.

I have considered warning users who provide a @hotmail/live email address to add us to their address book or check their junk folder - but this just seems unprofessional to me - it may be that i have to resort to this.

As for becoming Sender Score Certified - its very unlikely that i can justify the cost of this when considering the low volume and purpose of these emails.

Answer

SchizoDuckie picture SchizoDuckie · Oct 30, 2008

My company does professional e-mail marketting campaigns (through strongmail servers) we send thousands of (sollicited) emails a day to all kinds of addresses.

The problem you are facing is that you have no authority. You could just be some spammer trying to send loads of spam.

The thing you need to do is:

  • Add unsubscribe links
  • Apply for hotmail's Junkmail reporting program (JMRP) and MAKE SURE people that press the 'this is junk' button do not get mailed again. This will up your 'sender score; @ hotmail and allow you messages to get through.
  • Add SPF and other antispam solutions.
  • Do not send more than 50 e-mails per minute to @hotmail.com (other domains have other limits)

B.t.w we use PHPMailer to compose our messages, no problem at all with that :-) The problem nowadays really is the restricting receiving mailservers.