Mail()-Funktion Problem mit Zeilenumbrüchen
Koeffi
- php
Hallo Leute,
ich habe ein Problem mit Zeilenumbrüchen bei Mailversand mit PHP. Ich möchte gerne eine Textmail verschicken, bei meinem alten Provider lief alles problemlos doch seitdem ich gewechselt bin erziele ich nicht mehr das gewünschte Ergebnis:
ich möchte folgenden Text verschicken:
$nachricht = "Dies ist eine Testnachricht
Mal sehen
ob der das mit
den Zeilenumbrüchen checkt.";
Leider wird die Nachricht in Outlook so angezeigt:
Dies ist eine Testnachricht
Mal sehen
ob der das mit
den Zeilenumbrüchen checkt.
// also überall noch eine Extra-Zeile
Natürlich könnte ich das ganze Problem mit \n lösen, aber das möchste ich eigentlich nicht, weil es meiner Meinung nach sehr unübersichtlich ist alles in eine Zeile zu stecken.
ich benutze folgenden Header:
$header .="MIME-Version: 1.0\n";
$header .="Content-Transfer-Encoding: 7bit\n";
$header .="Content-Type: text/plain; charset=iso-8859-1\n";
$header .= "From: $absender <$absmail>";
ich habe es auch schon mit Base64 probiert, dann klappt es zwar aber es gibt bei einigen Nutzen deswegen Probleme.
Mal schauen, ob mir jemand weiterhelfen kann...
vielen Dank schon mal
Koeffi
Versuch mal ein \n am Ende der Zeile.
Gruss
Pedro
Wie bereits gesagt:
Natürlich könnte ich das ganze Problem mit \n lösen, aber das möchste ich eigentlich nicht, weil es meiner Meinung nach sehr unübersichtlich ist alles in eine Zeile zu stecken.
Ich hätte gerne eine andere Lösung, es muss doch irgendwie gehen.
Hallo Koeffi!
ich habe ein Problem mit Zeilenumbrüchen bei Mailversand mit PHP.
Im Moment kann ich mir das nur so erklären, dass dein physisches
Umbrechen des Textes nicht als CR LF (carriage return -- line feed)
interpretiert, sondern als CR LF LF (\r\n\n). Dieser Fehler tritt
bei einigen PHP-Versionen auf. Es wäre also besser, gleich manuell
das Steuerzeichen \n einzugeben.
Deine Bedenken der "Unübersichtlichkeit" verstehe ich aber nicht.
Und wenn es wirklich so eminent wichtig sein sollte, dann verwende
doch ne simple Suchen-und-Ersetzen-Funktion.
℆, ℒacℎgas
Sorry, dass ich zu faul bin die \n zu machen, aber das Zeug wird wirklich unübersichtlich ohne das "physische Unterbrechen"
Beispiel:
Bei der intendierten Realisierung der\nlinguistischen Simplifizierung
des regionalen Idioms resultiert die Evidenz\n der Opportunität extremapparent, den \nelaborierten und quantitativ opulenten Usus nicht assi-milierter Xenologien \nkonsequent zu eliminieren!
Hat jemand noch ne andere Lösung...???
Suchen/Ersetzen-Funktion ???
Was soll ich suchen und was ersetzten?
Hallo Koeffi!
Suchen/Ersetzen-Funktion ???
Was soll ich suchen und was ersetzten?
Nun, z.B. mit str_replace nach "\r\n\n" suchen und durch "\n ersetzen.
Du musst das natürlich ausprobieren, bis es den gewünschten Effekt hat.
℆, ℒacℎgas
Hmm... ich hab so ziemlich alle Kombinationen durchprobiert, ich denke das klappt so nicht.
Kann man das nicht irgendwie über den Header lösen.
Da muss es doch ne Lösung geben.
Grüße
Koeffi
Hello,
Kann man das nicht irgendwie über den Header lösen.
Man sollte dazu erstmal wissen, was denn wann überhaupt drinsteht in der Datei, die ans email-System (MTA) übergeben wird und dann später in der der, die rausfällt aus dem email-Client.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo Lachgas...
Danke für deine Hilfe, ich hab nochmal ein bisschen rumprobiert und mit str_replace("\n","",$var); klappt es jetzt.
Vielen vielen Dank
und weiter so
Koeffi
echo $begrueszung;
Danke für deine Hilfe, ich hab nochmal ein bisschen rumprobiert und mit str_replace("\n","",$var); klappt es jetzt.
"Rumprobieren" ist eine Möglichkeit, wenngleich eine schlechte. Nachschauen, wie von Tom vorgeschlagen, wäre besser.
Schau doch einfach mal nach, welche Zeichen im Mailtext drin sind und welche nach Anwenden deiner "rumprobierten" Lösung noch drinstehen, zum Beispiel damit:
echo '<pre>' . chunk_split(chunk_split(bin2hex($mailtext), 2, ' '), 48);
Das gibt den $mailtext in Hex-Darstellung mit Leerzeichen zwischen den Bytes und 16 Bytes pro Zeile aus.
echo "$verabschiedung $name";
Hello,
irgendwie habe ich noch überhaupt nicht verstanden, wo denn der Text übergeben wird.
Ich habe nur falsch abgeschlossene Header gesehen bisher.
Header in eMails müssen mit CRLF abgechlossen werden.
Damit das gewählesitet ist, solltest Du Dir eine Konstante definieren:
define ('CRLF',chr(13).chr(10));
Warum dann aber Dein Text stattdessen doppelte Zeilenumbrüche bekommt, kann man wohl erst nach der Begutachtung mit einem Hex-Editor beantworten, vor der Absendung und nach der Absendung bzw. Empfang.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom