hippytyre hippytyre - 3 months ago 11
PHP Question

php headers mail headers "554 Message not allowed - Headers are not RFC compliant[291]"

I'm having problems sending email to yahoo.com email addresses, the mail I send from my php script works perfectly for every other domain i send it to apart from one of our users who insists on keeping her yahoo email.

here are my headers

$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "Date: $date";
$headers[] = "From: 'DSAC Events' <$from>";
$headers[] = "Reply-To: <$replyto>";
$headers[] = "Subject: {$subject}";
$headers[] = "Return-Path: <$from>";
$headers[] = "X-Priority: 3";//1 = High, 3 = Normal, 5 = Low
$headers[] = "X-Mailer: PHP/" . phpversion();

mail($to, $subject, $msg, implode("\r\n", $headers));


I've read lots posts about people with the same problem, I've tried adding a message-id and return-path I've added the date: after reading that might be the problem and various other things to no avail.

Here is an example of the bounced mail source.

Return-path: <>
Envelope-to: d11dsa@zeus1.easy-internet.co.uk
Delivery-date: Sat, 08 Nov 2014 14:41:32 +0000
Received: from mailnull by zeus1.easy-internet.co.uk with local (Exim 4.82)
id 1Xn7Cm-001cxb-8a
for d11dsa@zeus1.easy-internet.co.uk; Sat, 08 Nov 2014 14:41:32 +0000
X-Failed-Recipients: user@yahoo.com
Auto-Submitted: auto-replied
From: Mail Delivery System <Mailer-Daemon@zeus1.easy-internet.co.uk>
To: d11dsa@zeus1.easy-internet.co.uk
Subject: Mail delivery failed: returning message to sender
Message-Id: <E1Xn7Cm-001cxb-8a@zeus1.easy-internet.co.uk>
Date: Sat, 08 Nov 2014 14:41:32 +0000

This message was created automatically by mail delivery software.

A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:

user@yahoo.com
SMTP error from remote mail server after end of data:
host mta6.am0.yahoodns.net [63.250.192.46]: 554 Message not allowed - Headers are not RFC compliant[291]

------ This is a copy of the message, including all the headers. ------

Return-path: <d11dsa@zeus1.easy-internet.co.uk>
Received: from d11dsa by zeus1.easy-internet.co.uk with local (Exim 4.82)
(envelope-from <d11dsa@zeus1.easy-internet.co.uk>)
id 1Xn7Ci-001cl4-9S
for user@yahoo.com; Sat, 08 Nov 2014 14:41:29 +0000
To: user@yahoo.com
Subject:
X-PHP-Script: www.dsa.co.uk/eventmail.php for 2.218.47.72
MIME-Version: 1.0
Content-type: text/plain; charset=iso-8859-1
Date: Sat, 08 Nov 2014 14:41:28 +0000
From: DSACEvents <events@dsa.co.uk>
Reply-To: <person@live.co.uk>
Subject:
X-Priority: 3

Answer

Thanks for the reply and you're right. Here's what I eventually ended up with which works perfectly.

    function generateMessageID()
{
  return sprintf(
    "<%s.%s@%s>",
    base_convert(microtime(), 10, 36),
    base_convert(bin2hex(openssl_random_pseudo_bytes(8)), 16, 36),
    $_SERVER['SERVER_NAME']
  );
}

        $headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "Mesaage-id: " .generateMessageID();
$headers[] = "From: 'DSAC Events' <$from>";
$headers[] = "Reply-To: $Arranger <$replyto>"; 
$headers[] = "Date: $date";
$headers[] = "Return-Path: <$from>";
$headers[] = "X-Priority: 3";//1 = High, 3 = Normal, 5 = Low
$headers[] = "X-Mailer: PHP/" . phpversion();


mail($to, $subject, $message, implode("\r\n", $headers));
Comments