Frage

Ich habe den folgenden Code, der eine Nachricht mit der mail () Funktion sendet. Alles funktioniert gut mit Ausnahme der Zeilenumbrüche am Ende jeder Zeile scheinen nicht zu funktionieren. Wie Sie sehen, ich bin mit „\ r \ n“ in der Hoffnung, dass dies mir eine Pause geben, aber es ich habe nicht <br> hinzugefügt, um die Pause zu bekommen, aber ich würde lieber das nicht verwenden, falls jemand nicht über ein HTML-E-Mail-Client.

<?php
  $to = 'user@example.com'; // Was a valid e-Mail address, see comment below
  $name = $_REQUEST['name'] ;
  $email = $_REQUEST['email'] ;
  $subject = $_REQUEST['subject'] ;
  $message = $_REQUEST['message'] ;

  $content = 'Name: '.$name."\r\n";
  $content .= 'Email: '.$email."\r\n";
  $content .= 'Subject: '.$subject."\r\n";
  $content .= 'Message: '.$message."\r\n";

  $headers  = 'MIME-Version: 1.0' ."\r\n";
  $headers .= 'Content-type: text/html; charset=iso-8859-1' ."\r\n";

  // Additional headers
  $headers .= 'To: iVEC Help <help@ivec.com>'. "\r\n";
  $headers .= 'From: '.$name.' <'.$email.'>' . "\r\n";

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

?>

<p> You sent it ... good work buddy </p>
<p> <?php   '$name' ?> </p>
War es hilfreich?

Lösung

Sie es als HTML zu senden -. Den Inhaltstyp ändern, um text/plain und es sollte funktionieren

Andere Tipps

Das Problem ist, dass Sie sagen, in Ihrem Header, dass die E-Mail ist eine HTML-E-Mail:

$headers .= 'Content-type: text/html; charset=iso-8859-1' ."\r\n";

Wenn Sie Kompabilität mit beiden HTML und Text Kunden sicherstellen wollen, sollten Sie den Multipart-Content-Typen. Dies kann auf viele verschiedene Arten erreicht werden, aber eine einfache Möglichkeit ist es, eine Bibliothek zu verwenden, die dies für Sie tun können. Zum Beispiel können Sie PEAR: Mail_Mime

Ich bin kein Experte auf diesem Gebiet, aber meine Vermutung wäre, dass Sie den Inhaltstyp sind Einstellung / html, um Text, der HTML-Rendering impliziert (was bedeutet, Zeilenumbrüche zu einem Raum übersetzt werden). Wenn Sie keine HTML-Elemente verwenden (die nicht angezeigt werden), versuchen Sie den Inhaltstyp Einstellung text / plain.

Wie bereits erwähnt, entweder setzen Sie text / plain oder eine HTML-Pause für Zeilenumbrüche hinzufügen:

$content = 'Name: '.$name."</br>\r\n";

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top