Electronix: Sendmail unter XAMPP mit \n statt \r\n

Hallo,

ich habe folgendes Problem:
Zur Programmierung von Webanwendungen verwende ich als Testsystem XAMPP unter Windows. Wenn ich nun mit PHP Mails über sendmail verschicke, muss ich die Headerinfos mit \r\n trennen. Von dem tatsächlichen Server wird allerdings nur \n verlangt. Wenn ich nun das Script auf den Server hochlade, muss ich von Hand im ganzen Code alle \r\n durch \n ersetzen.
Gibt es vielleicht eine Möglichkeit, den XAMPP-Server so zu konfigurieren, dass er mit \n zufrieden ist. Dann müsste ich das nicht jedes mal ändern.
Oder kennt ihr eine andere Lösung, um mein Problem zu beheben?

Ich hoffe, ihr könnt mir helfen!

MfG,

Electronix

  1. Zur Programmierung von Webanwendungen verwende ich als Testsystem XAMPP unter Windows. Wenn ich nun mit PHP Mails über sendmail verschicke, muss ich die Headerinfos mit \r\n trennen.

    Genauer: Mit "\015\012" (Oktalnotation)

    \r und \n sind bereits Programm-spezifische Abstraktionen.

    Von dem tatsächlichen Server wird allerdings nur \n verlangt.

    Der "tatsächliche Server" ist hier wohl sendmail, und das hat meiner Erfahrung gemäss keine Probleme mit "\015\012" als Header-Trennzeichen.
    Möglicherweise wird aber gar nicht nach sendmail, sondern einem anderen MTA durchgereicht.

    Wenn ich nun das Script auf den Server hochlade, muss ich von Hand im ganzen Code alle \r\n durch \n ersetzen.
    Gibt es vielleicht eine Möglichkeit, den XAMPP-Server so zu konfigurieren, dass er mit \n zufrieden ist. Dann müsste ich das nicht jedes mal ändern.

    Falsche Baustelle.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. Der "tatsächliche Server" ist hier wohl sendmail, und das hat meiner Erfahrung gemäss keine Probleme mit "\015\012" als Header-Trennzeichen.
      Möglicherweise wird aber gar nicht nach sendmail, sondern einem anderen MTA durchgereicht.

      Mit dem "tatsächlichen Server" meine ich den Server, auf den das Script später hochgeladen wird.

      Wenn ich nun das Script auf den Server hochlade, muss ich von Hand im ganzen Code alle \r\n durch \n ersetzen.
      Gibt es vielleicht eine Möglichkeit, den XAMPP-Server so zu konfigurieren, dass er mit \n zufrieden ist. Dann müsste ich das nicht jedes mal ändern.

      Falsche Baustelle.

      Nein, die Konfiguration des Servers, auf den das Script später hochgeladen wird, soll ja nicht geändert werden, sondern die Konfiguration des lokalen XAMPP-Servers, auf dem ich das Script nur vorher teste. Er soll mir schließlich die Funktionsweise des tatsächlichen Servers simulieren.

      Es tut mir Leid, dass ich mich so verkehrt ausgedrückt habe.

      MfG,

      Electronix

      1. Hi,

        Nein, die Konfiguration des Servers, auf den das Script später hochgeladen wird, soll ja nicht geändert werden,

        warum sollen auf dem System keine Fehler behoben werden? Praktisch überall, wo mit technischen Protokollen gearbeitet wird, ist \015\012 als das *einzige* Zeilenendesymbol definiert - verlangt ein System die Änderung zu \012, ist es defekt.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi!

          warum sollen auf dem System keine Fehler behoben werden? Praktisch überall, wo mit technischen Protokollen gearbeitet wird, ist \015\012 als das *einzige* Zeilenendesymbol definiert - verlangt ein System die Änderung zu \012, ist es defekt.

          Es kommt auf die Perspektive an. Wenn ein Anwender auf seinem System eine Mail verfassen möchte, muss er nicht das Mail-Protokoll kennen. Die Eingabe in eine technisch notwendige Form zu bringen wäre Aufgabe des Programms, dessen er sich bedient. Der Anwender sollte also die Zeilenenden nehmen, die auf seinem System der Standard sind und der MTA macht den Rest.

          PHP kennt jedenfalls die Konstante PHP_EOL, die je nach System mit \r\n, \r oder \n belegt ist.

          Lo!

          1. Hi,

            warum sollen auf dem System keine Fehler behoben werden? Praktisch überall, wo mit technischen Protokollen gearbeitet wird, ist \015\012 als das *einzige* Zeilenendesymbol definiert - verlangt ein System die Änderung zu \012, ist es defekt.
            Es kommt auf die Perspektive an. Wenn ein Anwender auf seinem System eine Mail verfassen möchte, muss er nicht das Mail-Protokoll kennen.

            nein, das muss der entsprechende Client. Wenn ein Anwender diesen Client *programmiert*, dann *ist* er derjenige, der es kennen muss.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Hi!

              Es kommt auf die Perspektive an. Wenn ein Anwender auf seinem System eine Mail verfassen möchte, muss er nicht das Mail-Protokoll kennen.
              nein, das muss der entsprechende Client. Wenn ein Anwender diesen Client *programmiert*, dann *ist* er derjenige, der es kennen muss.

              Den Client programmiert er auch nicht, denn das ist PHPs mail()-Funktion. Und es ist sinnlos, die additional_headers für mail() mit \r\n zu trennen, weil mail() selbst nur \n verwendet, wenn es die Parameter to, subject, die Header und message zusammenfügt. Begründung in einem Bugreport dafür war, dass es MTAs Aufgabe sei, die richtigen Zeilenumbrüche einzufügen, und dass es einige Unix-MTAs (oder zumindest einer) unintelligent lösen, indem sie einfach alle \n zu \r\n wandeln, was bei \r\n dann zu \r\r\n führt.

              Also: Man kann getrost \n verwenden, es wird nicht besser, wenn man \r\n nimmt, nur unter Umständen schlechter.

              Lo!

              1. Hi,

                Den Client programmiert er auch nicht, denn das ist PHPs mail()-Funktion.

                wenn PHP einem vernünftigen Konzept folgen würde, wäre ich glücklich, Dir zustimmen zu dürfen. Dummerweise tut es das nicht. Insofern: Nein, der Client ist diejenige Programmlogik, die die mail()-Funktion verwendet.

                Und es ist sinnlos, die additional_headers für mail() mit \r\n zu trennen, weil mail() selbst nur \n verwendet, wenn es die Parameter to, subject, die Header und message zusammenfügt. Begründung in einem Bugreport dafür war, dass es MTAs Aufgabe sei, die richtigen Zeilenumbrüche einzufügen, und dass es einige Unix-MTAs (oder zumindest einer) unintelligent lösen, indem sie einfach alle \n zu \r\n wandeln, was bei \r\n dann zu \r\r\n führt.

                Streiche "Begründung", setze "Ausrede".

                Also: Man kann getrost \n verwenden,

                Du meinst, es ist eh schon kaputt, und reparieren kann man's nicht. Hm, bedauernde Zustimmung. Übrigens sehe ich die Pflicht der Formatherstellung nicht in einem System, das die Daten verteilen soll.

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes