Electronix: Additional Headers mit mail()

Hallo,

ich habe mit folgendem Code versucht, auf meinem Server eine Mail zu versenden:

$inhalt = "Benachichtigung ... bla, bla... a";  
$header = "From: Ich <me@example.com>\r\n";  
$header .= "Content-Type: text/plain; charset=UTF-8\r\n";  
$header .= "Content-Transfer-Encoding: 8bit";  
mail("test@example.com", "Betreff", $inhalt, $header);  

Das klappt soweit auch, allerdings kommt dann folgendes an:

Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Message-Id: 20090622171627.4DC80AF002DC@example.com
Date: Mon, 22 Jun 2009 19:16:27 +0200 (CEST)

Benachichtigung ... bla, bla... ä

Also scheinbar wird der vierte Parameter ignoriert bzw. falsch angehängt und dann vom Mailprogramm nicht als Header erkannt.

Woran kann das liegen?

MfG,

Electronix

  1. Hi,

    $inhalt = "Benachichtigung ... bla, bla... a";

    $header = "From: Ich me@example.com\r\n";
    $header .= "Content-Type: text/plain; charset=UTF-8\r\n";
    $header .= "Content-Transfer-Encoding: 8bit";
    mail("test@example.com", "Betreff", $inhalt, $header);

      
    ich rieche etwas. Es riecht nach ... falschen Zeilenumbrüchen. ;-)  
      
    
    > Das klappt soweit auch, allerdings kommt dann folgendes an:  
    >   
    > Content-Type: text/plain; charset=UTF-8  
    > Content-Transfer-Encoding: 8bit  
    > Message-Id: <20090622171627.4DC80AF002DC@example.com>  
    > Date: Mon, 22 Jun 2009 19:16:27 +0200 (CEST)  
    >   
    > Benachichtigung ... bla, bla... ä  
      
    Dann lass mal die \r weg und lass nur \n als Zeilenumbruch. Ja, der korrekte Zeilenumbruch im Mail-Kontext ist \r\n, aber auf Unix-ähnlichen Systemen sitzt zwischen Applikation (PHP) und Server (SMTP) normalerweise noch ein Script oder Programm, das manchmal sowohl \r als auch \n in \r\n umwandelt. Folge: Deine erste Headerzeile (From:) wäre mit zwei Zeilenumbrüchen vom Rest abgetrennt - und zwei Zeilenumbrüche bedeuten das Ende der Header und den Beginn des Nutzinhalts.  
      
    So long,  
     Martin  
    
    -- 
    Frauen sind wie Elektrizität: Fasst man sie an, kriegt man eine gewischt.
    
    1. Hi,

      Dann lass mal die \r weg und lass nur \n als Zeilenumbruch. Ja, der korrekte Zeilenumbruch im Mail-Kontext ist \r\n, aber auf Unix-ähnlichen Systemen sitzt zwischen Applikation (PHP) und Server (SMTP) normalerweise noch ein Script oder Programm, das manchmal sowohl \r als auch \n in \r\n umwandelt. Folge: Deine erste Headerzeile (From:) wäre mit zwei Zeilenumbrüchen vom Rest abgetrennt - und zwei Zeilenumbrüche bedeuten das Ende der Header und den Beginn des Nutzinhalts.

      Erstaunlich, das klappt tatsächlich!
      Vielen Dank!

      MfG,

      Electronix

      1. Hello,

        Erstaunlich, das klappt tatsächlich!
        Vielen Dank!

        Und wenn Du nun auch noch die Header vernünftig codierst, sodass sie nur 7-Bit-ASCII bekommen, dann wirst Du noch weniger Probleme haben.

        http://de2.php.net/manual/en/function.mb-decode-mimeheader.php

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de