Wie kann ich Zeilenumbrüche in einer E-Mail einfügen (PHP)?

5 Antworten

Mit \n kannst du eine neue Linie machen. Dies ist fast überall der Standard und funktioniert auch programmiersprachenübergreifend. In einer E-Mail kannst du aber auch HTML nutzen und daher zum Beispiel auch <br/> anstelle von \n nutzen.

Woher ich das weiß:Berufserfahrung – Informatiker Applikationsentwicklung
TechPech1984  15.11.2021, 14:26

nur wenn der client auch html annimmt.

meiner tut das schon einmal nicht . besser ist.

1
Wie kann ich Zeilenumbrüche in einer E-Mail einfügen (PHP)?
mail("email-adresse", "Kontaktformular", 
  'Firma: '.$_POST["Firma"].PHP_EOL.
  'Branche: '.$_POST["Branche"].PHP_EOL.
  'Anrede: '.$_POST["Anrede"].PHP_EOL);

Alex

Auf PHP Seite versuchst du eine rudimentäre Trennung der Zeilen in dem du die Buchstaben Wort für Wort mitzählst in einer Art, damit du abschätzen kannst ob sich das nächste Wort noch auf der Zeile ausgeht und fügst mit Stringoperationen ein "\n" an geeigneter Stelle ein also nicht gerade mitten in einem Wort.

Woher ich das weiß:Berufserfahrung

Na, da wo Du eine neue Zeile anfangen willst. Um einen besser lesbaren Absatz zu erzeugen machst Du einfach "\n\n".

Einfach ausprobieren!

komplettratlos 
Fragesteller
 15.11.2021, 14:21

Folgende Dinge habe ich probiert (ohne Erfolg):
"Kontaktformular", 'Firma: '.$_POST["Firma"]\n.'Branche: '.$_POST["Branche"].

"Kontaktformular", 'Firma: '.$_POST["Firma"].'\nBranche: '.$_POST["Branche"].

"Kontaktformular", 'Firma: '.$_POST["Firma"]"\n".'Branche: '.$_POST["Branche"].

0
regex9  15.11.2021, 15:48
@komplettratlos

Noch abseits der Frage, würde ich dir zu einigen Änderungen raten.

1) Validiere Eingaben von außen (also die aus $_POST kommen), bevor du sie kommentarlos weiterverwendest (entferne bspw. Zeilenumbrüche und Sonderzeichen). Andernfalls gibst du deinen Nutzern die Möglichkeit einer Mail-Injection.

2) Für deine Erfolgsmeldung setzt du ein Überschriftenelement ein. Es handelt sich dabei doch aber um gar keine Überschrift für das Formular oder andere Seiteninhalte. Du missbrauchst hier das h1-Element sicherlich nur aufgrund seiner visuellen Formatierung.

Besser wäre es, den Text via CSS entsprechend zu formatieren (dafür hast du ja auch schon eine Klasse gesetzt). Im Klassenselektor kannst du die Schriftgröße mit font-size bestimmen.

.erfolg {
  font-size: 32px;
}

Im Markup würde ich auf einen Paragraph zurückgreifen.

<p class="erfolg">Danke für Ihre Anfrage!</p>

3) Das legend-Element ist nur als direktes Kindelement eines fieldset erlaubt.

<form>
  <fieldset>
    <legend>...</legend>
    <!-- ... -->
  </fieldset>
</form>

4) Du setzt zwar label-Elemente ein, aber keines davon hat eine logische Bindung zu seinem dazugehörigen Eingabefeld. Bindungen kannst du aufbauen, indem du dem Eingabefeld eine ID gibst, worauf das label mit seinem for-Attribut verweist.

<label for="firma">Firma</label><br>
<input id="firma" type="text" name="Firma">

Alternativ könnte man auch das input-Element im label-Element einschachteln.

5) Leere Labels für ein option-Element sind nicht zulässig. Ein Leerzeichen schafft Abhilfe. Zusätzlich kann man das Element gleich noch für eine Auswahl deaktivieren.

<option label=" " disabled selected value=""></option>

6) Niemals nie werden Aktionselemente (a, button) ineinander geschachtelt (egal in welcher Reihenfolge). Nutze einfach nur einen Button:

<button type="submit" name="submit">Versenden!</button>

Wenn du für diesen spezielle Stylings einsetzen möchtest (damit er bspw. wie ein Link aussieht), verwende CSS.

0

Mach zwischendrin doch mal ein "\n" (Backslash kleines n) für "Newline"

komplettratlos 
Fragesteller
 15.11.2021, 14:03

Danke für den Tipp! Leider bin ich ein absoluter Noob: wo muss das \n hin?

0