Search code examples
phpemailsmtpmimeboundary

MIME php mail only showing text/plain version


I try to send a multipart/alternative email so i send a text version and a html version in a single mail. My problem is that the mail only contains this plain text:

The mail is here:

Multipart Message coming up

--b4d67c224c82d8fad38c0bcef1a0bf97Content-Type: text/plain; charset=iso-8859-1Content-Transfer-Encoding: 7bitYou really ought remember the birthdays--b4d67c224c82d8fad38c0bcef1a0bf97Content-Type: text/html; charset=iso-8859-1Content-Transfer-Encoding: 7bit<html>
        <head>
          <title>Birthday Reminders for August</title>
        </head>
        <body>
          <p>Here are the birthdays upcoming in August!</p>
        </body>
        </html>
        --b4d67c224c82d8fad38c0bcef1a0bf97--

The code is shown below.

<?

//this is a path to PHP mailer class you have dowloaded
$to      = "mail@mydomain.com";

$boundary = md5(date('U'));

$subject = "My Subject";

$headers = "From: mail@mydomain.com" . "\r\n".
           "X-Mailer: PHP/".phpversion() ."\r\n".
           "MIME-Version: 1.0" . "\r\n".
           "Content-Type: multipart/alternative; boundary=$boundary". "\r\n".
           "Content-Transfer-Encoding: 7bit". "\r\n";

$text = "You really ought remember the birthdays";     
$html = '<html>
    <head>
      <title>Birthday Reminders for August</title>
    </head>
    <body>
      <p>Here are the birthdays upcoming in August!</p>
    </body>
    </html>
    ';

$message = "Multipart Message coming up" . "\r\n\r\n".
       "--".$boundary.
       "Content-Type: text/plain; charset=iso-8859-1" .
       "Content-Transfer-Encoding: 7bit".
       $text. 
       "--".$boundary. 
       "Content-Type: text/html; charset=iso-8859-1". 
       "Content-Transfer-Encoding: 7bit". 
       $html.
       "--".$boundary."--";

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

?>

Solution

  • You are not terminating boundary and content lines with "\n"

    According to mime specification compulsory