2016-10-26 1 views
-1

Warum die Nachricht in einer Zeile kommt? nachdem ich die $headers meine Nachricht begann, wurde in einer einzigen Zeile.Zeilenumbrüche funktioniert nicht

<?php 

// your email 
$user_email = "[email protected]"; 

$mail = array(
    "name" => htmlspecialchars($_POST['cf_name']), 
    "email" => htmlspecialchars($_POST['cf_email']), 
    "subject" => htmlspecialchars($_POST['cf_subject']), 
    "assunto" => 'Novo contato realizado via website',  
    "message" => htmlspecialchars($_POST['cf_message']) 
); 

$nome = $_POST['cf_name']; 
$email = $_POST['cf_email']; 
$assunto = $_POST['cf_subject']; 
$assunto_mensagem = 'Novo contato realizado via website'; 
$mensagem = $_POST['cf_message']; 

$assunto = 'Novo contato realizado a partir do site Font Life'; 

$headers = "MIME-Version: 1.1\r\n". 
       "Content-type: text/html; charset=utf-8\n". 
       "Content-Transfer-Encoding: 8bit\n". 
       "From: ". $_POST['cf_name'] ." <". $_POST['cf_email'] .">\n". 
       "Reply-to: ". $_POST['cf_name'] ." <". $_POST['cf_email'] .">\n". 
       "Date: ". date("r"). "\n"; 

function validate($arr){ 

    return !empty($arr['name']) && strlen($arr['message']) > 20 && filter_var($arr['email'],FILTER_VALIDATE_EMAIL); 

} 

if(validate($mail)){ 

    echo mail($user_email, $mail['assunto'], 
     "Nome : $nome\n" 
     ."Assunto : $assunto\n" 
     ."E-mail : $email\n" 
     ."Mensagem : $mensagem\n", 
     $headers 
    ); 

} 

?> 

wird die Nachricht wie diese kommen:

Vorname: Pedro Assunto: Novo contato realizado a partir Website Font Life E-Mail tun: [email protected] Mensagem: asdklnasklasdmklasdmasdçlasd, MCASD

Es ist ein Fehler in meinem Code?

+0

Sie senden als HTML nicht einfachen Text in Ihren Headern, so dass dort und Ihr Code funktioniert. Lesen Sie das Handbuch zur Post. http://php.net/manual/en/function.mail.php oder benutze phpmailer. –

Antwort

2
  1. Sie sollten die Header mit \r\n (und nicht nur \n) teilen.
  2. Der Inhalt Teil sollte html sein - so in den Inhalt sollten Sie <br> für Zeilenumbruch verwenden.


Dies ist der Header Teil:

$headers = "MIME-Version: 1.1\r\n". 
      "Content-type: text/html; charset=utf-8\r\n". 
      "Content-Transfer-Encoding: 8bit\r\n". 
      "From: ". $_POST['cf_name'] ." <". $_POST['cf_email'] .">\r\n". 
      "Reply-to: ". $_POST['cf_name'] ." <". $_POST['cf_email'] .">\r\n". 
      "Date: ". date("r"); 

Dies ist der Aufruf an die Mail-Funktion ist:

mail($user_email, $mail['assunto'], 
    "Nome : $nome<br />\n". 
    "Assunto : $assunto<br />\n". 
    "E-mail : $email<br />\n". 
    "Mensagem : $mensagem<br />\n", 
    $headers 
); 
+0

Ja, '
' wird benötigt, um die Zeilen zu brechen, nein die Header sollten * nicht * vor dem Inhalt erscheinen - 'mail()' hat einen Parameter für die Header - http://php.net/manual/en/function .mail.php – Steve

+0

@Steve, Antwort aktualisiert, danke für die Notiz. – Dekel

+0

danke, ich dachte der E-Mail-Körper brauchte nur das '\ n', ich habe gerade die'
' hinzugefügt und es hat funktioniert. –

1

verwenden es funktioniert wahrscheinlich !!!

 echo mail($user_email, $mail['assunto'], 
      "Nome : $nome". <br><br>" 
      . "Assunto : $assunto"." <br><br>" 
      ."E-mail : $email"."<br> <br>" 
      ."Mensagem : $mensagem" 
      ."<br><br> ", 
      $headers 
);