forTeesSake Geschrieben 2. November 2006 Geschrieben 2. November 2006 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 Zitieren
kills Geschrieben 4. November 2006 Geschrieben 4. November 2006 Hi, wenn die Email Clients deine Mail als HTML interpretieren, dann kommt der Zeilenumbruch beim <br />, nicht beim \r\n bzw \n. Gruß, Markus Zitieren
forTeesSake Geschrieben 6. November 2006 Autor Geschrieben 6. November 2006 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! Zitieren
kills Geschrieben 6. November 2006 Geschrieben 6. November 2006 Hi, evtl falsche " verwendet? "\n" geht, hingegen '\n' nicht! Gruß, Markus Zitieren
forTeesSake Geschrieben 7. November 2006 Autor Geschrieben 7. November 2006 ich hatte es so: ... $headers .= "X-Mailer: PHP/".phpversion()."\n"; $headers .= "X-Sender-IP: ".$REMOTE_ADDR."\n"; ... [/PHP] das ging nicht. mit [PHP] $headers .= "X-Mailer: PHP/".phpversion().chr(10); $headers .= "X-Sender-IP: ".$REMOTE_ADDR.chr(10); funktionierts nun Zitieren
etreu Geschrieben 7. November 2006 Geschrieben 7. November 2006 Die Zeilen müssen laut http://www.ietf.org/rfc/rfc2821.txt?number=2821 (Seite 11, Abschnitt 2.3.7) aber mit CRLF (\r\n) abgeschlossen werden. Zitieren
geloescht_JesterDay Geschrieben 7. November 2006 Geschrieben 7. November 2006 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). Zitieren
forTeesSake Geschrieben 7. November 2006 Autor Geschrieben 7. November 2006 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 Zitieren
hdmikel Geschrieben 14. März Geschrieben 14. März Gibt eine möglichkeit nach dem Zeilenvorschub "\n" eine horizontale Linie zu erzeugen? Kein <hr>, das funktioniert nicht. Zitieren
Empfohlene Beiträge
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.