Zum Inhalt springen

[PHP] Zeilenumbruch in E-Mail


Empfohlene Beiträge

Hi und hallo,

ich lasse einen Benutzer Text in eine <textarea> eingeben.

Dieser Text wird dann als E-Mail versendet.

Dafür benutze ich die mail() Funktion von PHP, sowie einige reply und charset Header schon seit Jahren.

Bis jetzt sind meine E-Mails immer im korrekten Format angekommen.

In meiner neuen Anwendung arbeite ich mit Ajax, bzw. der prototype.js und sende meine Daten via "Post" an meine Auswertungssseite.

Diese Seite speichert die eingegebenen Daten in meiner Datenbank, und bildet aus diesen Daten dann den E-Mail Text.

Problem: Die Zeilenumbrüche.

Mein Outlook 2002 stellt die Zeilenumbrüche doppelt dar.

Outlook 2003 SP 2 stellt die Zeilenumbrüche leider gar nicht dar.

Ich habe mir mal per ord() jedes Zeichen meines Strings ausgeben lassen, und beim Zeilenumbruch wird mir 13 und 10 ausgegeben, was ich als korrekt ansehe. (?)

Wie könnte ich denn das problem lösen, denn mir fällt nichts mehr ein ausser anstatt Zeilenumbrüche "<br>" eingeben zu lassen und das dann beim erzeugen der E-Mail mit "\n" auszutauschen. Das ist aber nicht gerade Professionell.

Woran kanns liegen?

Ich kann mir vorstellen, dass entweder irgendwas am Server anders eingestellt ist, als bei allen anderen Servern bisher (unwahrscheinlich)

Oder aber eher an Ajax/prototype, dass die Daten irgendwie in einer anderen Kodierung ankommen, denn (jetzt fällts mir ein) alle Umlaute kommen auch in einem komischen Format, nämlich ü = ü oder ß = ß an.

Wenn ich wüsste, wie in diesem Format der Zeilenumbruch aussieht, könnte ich das dann einfach austauschen.

Vielen Dank für jeden Tipp

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok, ich danke für die Info.

Es lag aber an etwas Anderem: Mein Server (nehme ich an) interpretierte in meinen Header Angaben das \n zum trennen der einzelnen Headerwerte, also Content-Type - Encoding etc.) nicht wirklich als \n, sondern schrieb wirklich "\n" in den Header.

Ich habe das \n nun mit chr(10) ausgetauscht und alles funktioniert soweit prima.

Vielen Dank!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es geht bei dem von dir angeführten um das SMTP Protokoll. Das hat mit seinem Problem nicht wirklich was zu tun (bzw. indirekt) weil er ja selber keine SMTP-Verbingung aufbaut. Er nutzt die mail()-Funktion und die Wiederum leitet irgendwas an den eingestellten MTA weiter (der dann für SMTP zuständig ist).

Desweiteren im 2. Absatz deines Textes:

In addition, the appearance of "bare" "CR" or "LF" characters in text

(i.e., either without the other) has a long history of causing

problems in mail implementations and applications that use the mail

system as a tool. SMTP client implementations MUST NOT transmit

these characters except when they are intended as line terminators

and then MUST, as indicated above, transmit them only as a <CRLF>

sequence.

Dort steht, dass \r oder \n eben doch öfter vorkommen, aber das ein SMTP Client dieses nicht übertragen darf, sondern in \r\n umsetzen muss. Ein SMTP Client, also nicht sein PHP-Skript ;)

EDIT:

Ich hab z.B. die Erfahrung gemacht, dass es je nach OS nicht egal ist, ob man \r\n oder \n schreibt. (Novell/Windows wollen z.B. \r\n, Linux hingegen kommt mit \r\n im Mailquelltext nicht zurecht und will nur \n ... zum korrekten entgegennehmen und dann versenden).

Link zu diesem Kommentar
Auf anderen Seiten teilen

EDIT:

Ich hab z.B. die Erfahrung gemacht, dass es je nach OS nicht egal ist, ob man \r\n oder \n schreibt. (Novell/Windows wollen z.B. \r\n, Linux hingegen kommt mit \r\n im Mailquelltext nicht zurecht und will nur \n ... zum korrekten entgegennehmen und dann versenden).

Eigentlich ging es ja zuerst aber nur um die \n in den Headerinformationen. Trotzdem hatte ich das o.g. Problem von jesterDay auch noch:

Nach nochmaligem prüfen und testen habe ich tatsächlich das gleiche rausgefunden:

Der Server ist ein Linux Server und ich muss im gewünschten Mailtext zuerst \r\n mit \n austauschen damit die Umbrüche richtig sind.

Komische Sache wie ich finde, denn ich habe auch andere Linux Server bei denen das nicht so ist :rolleyes:

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 17 Jahre später...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...