uwi2k2: imap_mail() Problem mit Umlauten in Subject bei einigen Mailserv

Hallo zusammen,

ich hab da ein sehr komisches Problem:
ich benutze die imap functionen um über ein pop3 postfach mails zu verschicken. das klappt auch soweit ganz gut, ABER bei einigen empfangenden Mailservern werden Umlaute wie ä ü ö als grosses 'X' im Betreff dargestellt. der Content ist von diesem Problem nicht betroffen. Ich habe schon mit allen Codierungen die mir so einfiehlen probiert das zu beheben, aber es klappt nicht. auch die imap codierungs funktionen halfen nicht.
Hatte das schonmal jemand ?

hier meine function zum senden:

  
function sendEmail($to, $text, $subject, $headers='')  
{  
    $from = "From: ".EMAIL_NAME." <".EMAIL_EMAIL.">\n";  
  
    $mbox = imap_open (IMAP_BOX, IMAP_U, IMAP_P);  
    imap_mail ( $to, $subject, $text, $from.$headers );  
    imap_close( $mbox , CL_EXPUNGE );  
}  

danke kai

  1. Hi!

    bei einigen empfangenden Mailservern werden Umlaute wie ä ü ö als grosses 'X' im Betreff dargestellt. der Content ist von diesem Problem nicht betroffen.

    Ja, für den Content gibt es den Header Content-Type, dem man eine charset-Angabe mitgeben kann. Bei Betreff und anderen Angaben im Header (zum Beispiel Namen im From, To und so weiter) gilt der "Content"-Type nicht, da ist nur ASCII garantiert. Allerdings gibt es eine speziell dafür vorgesehene Variante der Kodierung: Quoted Printable. PHPs imap-Extension kennt dafür imap_8bit() (Anwendungsbeispiele siehe User-Kommentare).

    Lo!

    1. Hallo,

      danke erstmal für die schnelle Antwort, aber das hatte ich auch schon versucht.
      selbst mit der zeile:

        
      $subject = imap_8bit( $subject );  
      
      

      kommt kein richtiges  ergebnis raus.
      dann bekomme ich statt 'bestätigen' 'best=E4tigen'.

      hast du noch eine idee ?

      danke
      kai

      Hi!

      bei einigen empfangenden Mailservern werden Umlaute wie ä ü ö als grosses 'X' im Betreff dargestellt. der Content ist von diesem Problem nicht betroffen.

      Ja, für den Content gibt es den Header Content-Type, dem man eine charset-Angabe mitgeben kann. Bei Betreff und anderen Angaben im Header (zum Beispiel Namen im From, To und so weiter) gilt der "Content"-Type nicht, da ist nur ASCII garantiert. Allerdings gibt es eine speziell dafür vorgesehene Variante der Kodierung: Quoted Printable. PHPs imap-Extension kennt dafür imap_8bit() (Anwendungsbeispiele siehe User-Kommentare).

      Lo!

      1. Hi!

        selbst mit der zeile:
        $subject = imap_8bit( $subject );

        kommt kein richtiges  ergebnis raus. dann bekomme ich statt 'bestätigen' 'best=E4tigen'.

        Das wäre richtig, aber noch nicht ausreichend.

        hast du noch eine idee ?

        Ja, schrieb ich ja auch schon:

        (Anwendungsbeispiele siehe User-Kommentare).

        Schon das erste Beispiel reicht. Es fehlt noch ein Vor- und Nachsatz zum Ergebnis der Funktion, den sie nicht mitliefert.

        Lo!

    2. Moin!

      Ja, für den Content gibt es den Header Content-Type, dem man eine charset-Angabe mitgeben kann. Bei Betreff und anderen Angaben im Header (zum Beispiel Namen im From, To und so weiter) gilt der "Content"-Type nicht, da ist nur ASCII garantiert. Allerdings gibt es eine speziell dafür vorgesehene Variante der Kodierung: Quoted Printable. PHPs imap-Extension kennt dafür imap_8bit() (Anwendungsbeispiele siehe User-Kommentare).

      http://de2.php.net/manual/en/function.mb-encode-mimeheader.php hilft besser.

      - Sven Rautenberg

      1. Hi!

        Quoted Printable. PHPs imap-Extension kennt dafür imap_8bit() (Anwendungsbeispiele siehe User-Kommentare).
        http://de2.php.net/manual/en/function.mb-encode-mimeheader.php hilft besser.

        Ja, aber: Um die mb-Funktionen sinnvoll anwenden zu können muss man mindestens noch mb_internal_encoding() zusätzlich aufrufen. Da finde ich eine kleine Stringverknüpfung zusammen mit imap_8bit() einfacher, zumal wenn er sowieso schon mit den imap-Funktionen hantiert.

        Außerdem gibt es für diesen Zweck noch quoted_printable_encode() (seit PHP 5.3).

        Lo!