Отправка html-сообщения по электронной почте дает raw html

У меня проблема с электронной почтой php html. У меня есть следующий код:

<?php $to = $_POST['username']; $subject = "Uw account is successvol aangemaakt!"; //begin body message $body = '<html><body><font face="verdana"><font color="#C0C0C0">Bedankt voor uw registratie op DirectOfficeSupport.com,Uw account is successvol aangemaakt!</font></html></body>'; $body .= '<html><body><p>&nbsp;</p></html></body>'; $body .= '<html><body><font color="#C0C0C0">Met een account worden alle functies van de website beschikbaar voor u.<font></html></body>'; $body .= '<html><body><p>&nbsp;</p></html></body>'; $body .= '<html><body><p>&nbsp;</p></html></body>'; $body .= '<html><body>Om uw account to kunnen gebruiken heeft u deze unieke verivicatie code gekregen. Deze moet ingevuld worden met het E-Mail adres en Wachtwoord. <font color="#C0C0C0">Les hier meer over verivicatie codes</font></html></body>'; $body .= '<html><body>Uw unieke verivicatie code: <b>!code!</b></html></body>'; $body .= '<html><body><p>&nbsp;</p></html></body>'; $body .= '<html><body><b>De informatie die u heeft opgegeven:</b></html></body>'; $body .= '<html><body>!1!</html></body>'; //end body message $from = 'account@directofficesupport.com'; (mail($to, $subject, $body, $form)) ?> 

Я пытаюсь отобразить его в письме. Но единственное, что он делает, это дать мне необработанный код.

Вам нужно отправить соответствующие заголовки, чтобы показать содержимое HTML, оно остановит ваш необработанный код, используйте следующие заголовки

 $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; $headers .= 'From: <account@directofficesupport.com>' . "\r\n"; mail($to, $subject, $body, $headers); 

Что-то вроде этого:

 $header = "MIME-Version: 1.0\r\n"; $header .= "Content-type: text/html; charset=iso-8859-1\r\n"; $header .= "From: <account@directofficesupport.com>\r\n"; mail($to, $subject, $body, $header); 

Вот пример из php.net .

И вам не нужно повторять <html>body> в каждой строке вашего $body .

 $body = '<html><body><font face="verdana"><font color="#C0C0C0">Bedankt voor uw registratie op DirectOfficeSupport.com,Uw account is successvol aangemaakt!</font>'; $body .= '<p>&nbsp;</p>'; $body .= '<font color="#C0C0C0">Met een account worden alle functies van de website beschikbaar voor u.<font>'; $body .= '<p>&nbsp;</p>'; $body .= '<p>&nbsp;</p>'; $body .= 'Om uw account to kunnen gebruiken heeft u deze unieke verivicatie code gekregen. Deze moet ingevuld worden met het E-Mail adres en Wachtwoord. <font color="#C0C0C0">Les hier meer over verivicatie codes</font>'; $body .= 'Uw unieke verivicatie code: <b>!code!</b>'; $body .= '<p>&nbsp;</p>'; $body .= '<b>De informatie die u heeft opgegeven:</b>'; $body .= '!1!</html></body>'; 

Используйте этот класс PHPMailer ! Я использую его довольно часто, и это здорово! Отправка почты с использованием функции «почта» не поддерживается ни на одном сервере и с помощью этого класса вы также можете отправлять с учетной записью Gmail или аналогичной.

EDIT: Как уже упоминалось в комментариях, вот простой пример:

 <?php include 'class.phpmailer.php'; $mail = new PHPMailer(); $mail->From('john@smith.com'); $mail->FromName('John Smith'); $mail->addAddress('john@doe.com', 'John Doe'); $mail->addAddress('jane@doe.com'); $mail->Subject('HTML Mail from John Smith'); $mail->isHTML(true); $mail->Body('<h1>This is a great HTML Mail</h1><br><b>Silence is gold</b>'); $mail->AltBody('Your client does not support HTML Mails. Read more here...'); // if SMTP is needed if($send_via_STMP) { $mail->isSMTP(); $mail->Host = 'smtp.smith.com;smtp.fallbackserver.smith.com'; $mail->SMTPAuth = true; $mail->Username = 'john@smith.com'; $mail->Password = '••••••••••••••'; if($encrypt_connection) { $mail->SMTPSecure = 'tls'; } } if(!$mail->send()) { echo "Message not send\n\n".$mail->ErrorInfo; } ?>