Koeffi: Mail()-Funktion Problem mit Zeilenumbrüchen

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

  1. Versuch mal ein \n am Ende der Zeile.

    Gruss
    Pedro

    1. 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.

  2. 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

    --
    Bei der intendierten Realisierung der linguistischen Simplifizierung
    des regionalen Idioms resultiert die Evidenz der Opportunität extrem
    apparent, den elaborierten und quantitativ opulenten Usus nicht assi-
    milierter Xenologien konsequent zu eliminieren!
    1. 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?

      1. 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

        --
        Bei der intendierten Realisierung der linguistischen Simplifizierung
        des regionalen Idioms resultiert die Evidenz der Opportunität extrem
        apparent, den elaborierten und quantitativ opulenten Usus nicht assi-
        milierter Xenologien konsequent zu eliminieren!
        1. 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

          1. 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

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
        2. 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

          1. 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";

  3. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau