Why can't I send an email to Hotmail?

user317005 picture user317005 · Aug 12, 2011 · Viewed 14.9k times · Source

Here's my code:

$boundary = sha1('whatever');

$headers = 'MIME-Version: 1.0'."\r\n";
$headers .= 'From: "Domainname" [email protected]'."\r\n";
$headers .= 'Reply-to: Domainname <[email protected]>'."\r\n";
$headers .= 'X-Priority: 3'."\r\n";
$headers .= 'X-Mailer: Mail 1.0'."\r\n";
$headers .= 'Subject: '.$subject."\r\n"; 
$headers .= 'Content-Type: multipart/alternative; boundary="'.$boundary.'"'."\r\n\r\n";

$message = '--'.$boundary."\r\n";
$message .= 'Content-Type: text/plain; charset="utf-8"'."\r\n\r\n";
$message .= $text."\r\n";
$message .= '--'.$boundary."\r\n";
$message .= 'Content-Type: text/html; charset="utf-8"'."\r\n\r\n";
$message .= $html."\r\n";
$message .= '--'.$boundary.'--';

mail($email, $subject, $message, $headers);

It worked for Gmail, Yahoo, GMX ...but it didn't work for Hotmail/Live/MSN.

Because it worked for Gmail, I can assume that it has nothing to do with my server, right?

I also tried it with just:

mail('[email protected]', 'This is a subject', 'This is the body');

Same problem. It doesn't even get send to my junk folder.

Answer

Vince V. picture Vince V. · Aug 12, 2011

Old answer:

Hotmail blocks domains without an SPF record. you can make one here

edit:

As of June 2015, common requirements are:

1) DKIM Enabling DKIM in Exim is now a very important tool to reduce the chance of your emails being flagged as spam. It's highly recommended to enable DKIM for your domains.

2) SPF record with -all instead of ~all

3) DMARC records to help remote servers decide what to do with failed DKIM/SPF messages.

4) The usual things, a) like reverse IP lookup on sending IP, b) forward lookup on that rDNS value preferably pointing to same IP, c) MX record on hostname.

Example:

"v=spf1 a mx ip4:1.2.3.4 -all"

Where 1.2.3.4 is the ip of your server.