Non-encoded 8-bit data im TO der mail?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Non-encoded 8-bit data im TO der mail?

    Hoi,

    wie ja jeder weiß, kann ich beim $to und $from einer email auch den vollen Namen des Empfängers mitgeben:
    Code:
    Peter Lustig <peter@lustig.de>
    Nun habe ich aber mit dem Mail-Server von U-Boot ein Problem. Sagen wir mal ein Herr Müller hat eine E-Mail Adresse bei uboot.com - also foo@uboot.com (zB).

    Wenn ich jetzt Karl Müller eine Email sende schreibe ich ja folgendes in den to Teil:

    PHP-Code:
    $to "Karl Müller <foo@uboot.com>"
    Leider schickt mir der uboot-mailserver dann folgende Antwort:
    Code:
    host mx01.uboot.com [194.88.217.40]: 554 5.6.0 Message with
    invalid header rejected, id=09850-41 - Non-encoded 8-bit data
    (char FC hex) in message header 'To':
    To: Karl M\\374ller <foo...

    Der Content-Type der Mail ist
    Code:
    Content-Type: text/plain; charset=ISO-8859-1
    betrifft aber denke ich nur den mail body.

    Jemand nen Vorschlag für mich wie ich die deutschen Umlaute für TO und REPLY-TO kodieren muss?



    PS: Das hier soll übrigens nichts schlechtes über den uboot mailserver sein, das ist momentan nur der einzige der mit meinen mails probleme macht...

  • #2
    Re: Non-encoded 8-bit data im TO der mail?

    Interessanter als der Content-type wäre wohl Content-Transfer-Encoding, da solltest du so wie ich das sehe quoted-printable verwenden.


    http://www.mailhilfe.de/frage6149.html
    http://www.lrz-muenchen.de/services/...ail/sld042.htm
    als Ansätze.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hi wahsaga,

      habs Probiert - als Testnamen mal "Frank Küster" genommen. Sieht jetzt leider so aus:

      Code:
      Reply-To: Frank K³ster <pm@i12.de>
      Content-Transfer-Encoding: quoted-printable
      Content-Type: text/plain; charset=ISO-8859-1
      X-Mailer: PHP/5.1.4

      hilft also auch nicht wirklich, leider. Hast du noch andere Vorschläge?

      EDIT:
      achso, Content-Transfer-Encoding: 8bit genau das selbe
      Zuletzt geändert von prego; 31.05.2006, 10:28.

      Kommentar


      • #4
        http://www.paefken.westfalen.de/de.n...mlaute-faq.txt

        das hab noch gefunden:

        ---
        2. Umlaute im Header:

        Im Header duerfen auf keinen Fall 8-Bit-Zeichen
        stehen. Deshalb werden hier Umlaute vom Newsreader
        kodiert und die entsprechende Zeichenkodierung
        dazugeschrieben. Dies sieht dann beispielsweise so
        aus:

        Subject: =?ISO-8859-1?Q?L=FCsung?= des Umlautproblems

        Hier wurde der Umlaut im Wort "Loesung" mit dem
        Zeichensatz ISO-8859-1 geschrieben und anschliessend
        kodiert (=FC).

        Da diese Kodierung immer nur US-ASCII-Zeichen
        enthaelt, ist gewaehrleistet, dass kein 8-Bit-Code
        im Header vorkommt, wie es die RfCs vorschreiben.
        ---

        Ok, versteh ich... Nur wie wandel ich nun mein "ü" in "=XX" um? Und, muß ich vor jedes Wort das einen deutschen Umlaut enthält die ISO-Kodierung machen, oder nur an den Anfang der Header Zeile?

        Kommentar


        • #5
          mb_encode_mimeheader() meine Rettung zu sein - leider gibt es nur quoted_printable_decode() und nicht encode.

          Kommentar


          • #6
            das hier scheint die Lösung:

            Code:
            To: =?ISO-8859-1?Q?Frank K=FCster?= <pm@i12.de>
            Subject: =?ISO-8859-1?Q?Danke f=FCr Alles?=
            Somit gehn auch deutsche Umlaute in Subjects.

            Lösung:
            (siehe auch: http://de2.php.net/manual/de/functio...ble-decode.php)
            PHP-Code:
            //Funktion aus den Comments von 
            function quoted_printable_encode$sString$charset 'ISO-8859-1' ) {
               
            $sString preg_replace'/[^\x21-\x3C\x3E-\x7E\x09\x20]/e''strtoupper(sprintf( "=%02x", ord ( "$0" ) )) ;',  $sString );
               
            preg_match_all'/.{1,73}([^=]{0,3})?/'$sString$aMatch );
               if(
            ount($aMatch) > 0){
                 return 
            '=?'.$charset.'?Q?'.implode'=' CR$aMatch[0]).'?=';
               }else{
                 return 
            $sString;
               }

            }

            //Anwendung:
            $to quoted_printable_encode('Karl Müller <karl.mueller@foo.de>'); 


            EDIT:
            funktion leicht verbessert
            Zuletzt geändert von prego; 31.05.2006, 12:30.

            Kommentar

            Lädt...
            X