Тело электронной почты пустое, MIME multipart (text & html) - PullRequest
0 голосов
/ 15 апреля 2011

Я могу отправить просто текст отлично, просто html хорошо, но когда я объединяю два, как следует, электронное письмо отправляет, но тело пусто.

$to = "some@email.com";
$subject = "Welcome";
$boundary = md5(date('U'));

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

// TEXT EMAIL PART
$text = "Congratulations";

// HTML EMAIL PART
$html = "<html><body>\n";
$html .= "<div>Congratulations</div>";
$html .= "</body></html>\n";

$message = "Multipart Message coming up" . "\n\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);    

Ответы [ 2 ]

1 голос
/ 15 апреля 2011

Вы забыли разрывы строк после строк Content-Type и Content-Transfer-Encoding, поэтому начала вашего основного содержимого смешаны с заголовками:

       "--".$boundary.
                    ^^^--- missing \n
       "Content-Transfer-Encoding: 7bit".
                                        ^^^--- missing \n\n
       $text. 

Как указано вкомментарии выше, используйте Swiftmailer или PHPMailer , чтобы сделать это.Они позаботятся обо всех мелких деталях и позволят вам отправлять всю почту в гораздо меньшем количестве строк кода.

0 голосов
/ 15 апреля 2011

$boundary - это не было определено, у вас нет разрыва строки до или после любой из границ, и у вас нет пустой строки между заголовками и телом каждой частиили разрыв строки после любого из этих заголовков).

Не обрабатывать MIME.Я уверен, что есть достойная библиотека для PHP, которая сделает это за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...