E-mail header auslesen - Namen werden falsch dargestellt

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

  • E-mail header auslesen - Namen werden falsch dargestellt

    hi,

    bei manchen email Headern werden die Namen (Attachment Name, Sender Name) falsch angezeigt!

    zb: =?iso-8859-1?Q?R=FCckmeldungen_Teilnehmer_f=FCr_Zuschuss.xls?=

    Der Name steht so im Header, aber nicht bei allen Mails! ich denke es liegt am sender! schicke ich mir selbst ne mail über web.de->neue Email stimmt alles, aber z.b. über outlook ist der name wie oben.

    was muss ich machen um den namen umzuwandeln, damit ich ihn richtig in ne DB schreiben kann?

    Hab schon gesucht, aber nix gefunden!

    Thx dc9000

  • #2
    das hängt mit den encoding zusammen.

    schaue dir mal die charsets an. da sollte dein problem liegen.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Ja, aber der name steht schon so drin!!

      ich lese aus über:

      PHP-Code:
      $struct=imap_fetchstructure $Host$MsgNr
      wenn ich mir dann mit print_r den struct ausgeben lasse sieht das so aus:

      PHP-Code:
      [from] => Array
              (
                  [
      0] => stdClass Object
                      
      (
                          [
      personal] => =?iso-8859-1?Q?J=FCrgen_Lang?=
                          [
      mailbox] => ich
                          
      [host] => t-online.de
                      
      )

              )

      bzwbei der anlage:

      [
      2] => stdClass Object
                      
      (
                          [
      type] => 3
                          
      [encoding] => 3
                          
      [ifsubtype] => 1
                          
      [subtype] => VND.MS-EXCEL
                          
      [ifdescription] => 0
                          
      [ifid] => 0
                          
      [bytes] => 24526
                          
      [ifdisposition] => 1
                          
      [disposition] => ATTACHMENT
                          
      [ifdparameters] => 1
                          
      [dparameters] => Array
                              (
                                  [
      0] => stdClass Object
                                      
      (
                                          [
      attribute] => FILENAME
                                          
      [value] => =?iso-8859-1?Q?R=FCckmeldungen_Teilnehmer_f=FCr_Zuschuss.xls?=
                                      )

                              ) 

      Kommentar


      • #4
        überall sehe ich nur iso-8859-1 stehen. das ist das charset. und da -1 für englisch (oder wie auch immer) steht, sind dort keine umlaute enthalten. also musst du wandeln.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          ok, aber muss ich dann vor dem umwandelt den value

          PHP-Code:
          [value] => =?iso-8859-1?Q?R=FCckmeldungen_Teilnehmer_f=FCr_Zuschuss.xls?= 

          bearbeiten, damit nur noch

          PHP-Code:
          [value] => R=FCckmeldungen_Teilnehmer_f=FCr_Zuschuss.xls 

          drin steht?

          Kommentar


          • #6
            ja.

            ich habe es aber auch noch nicht genutzt. es liegt aber definitiv am charset.

            mache dich mal selber schlau. ich meine im forum mal eine lösung dazu gesehen zu haben.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Mit charset umwandlung bin ich auf keinen grünen Zweig gekommen!


              Ich hab mir mal nen php-Web-Mailer angeschaut und da wird das so gelöst:


              PHP-Code:
              //**********************************************************
              //DecodeHeaderString -  z.B. "=?iso-8859-1?Q?=F6nderungen?=" -> "Änderungen"
              //                        Sowas steht manchmal im Header der E-Mail, warum weiß keiner ;-)!
              //                        Zum Glück sehen die alle gleich aus

              function DecodeHeaderString($HeaderString)
              {
                  
              $output "Empty String";        //Vorbesetzen

                  
              if($HeaderString)
                  {    
                      if(
              substr($HeaderString02) == "=?")        //Wenn das "einer von denen" ist (fängt mit "=?" an)
                      
              {
                          
              $start_pos strpos($HeaderString"?"2);            //Suche zweites "?"
                          
              $type substr($HeaderString$start_pos 11);    //Ermittle Typ (Steht zw. zweitem un drittem "?")
                          
              $newstr substr($HeaderString$start_pos 3strlen($HeaderString) - ($start_pos 5));
                                                                              
              // `->Alles zw. drittem und viertem "?". Das ist der eigentlich Text
                          
              if (strtoupper($type) == "Q")    //Quoted-Printable -> decode
                          
              {
                              
              $output str_replace("_"" " quoted_printable_decode($newstr));
                          }
                          if (
              strtoupper($type) == "B")    //Base64 -> decode
                          
              {
                              
              $output base64_decode($newstr);
                          }
                      }
                      else
                      {
                          
              $output $HeaderString;        //Wenn das "keiner von denen" ist
                      
              }
                  }
                  return 
              $output;

              Hat wohl doch nichts mit dem CHARSET zu tun. Das kann ich mir auch nicht vorstellen weil das ja von MailProgs wie z.B. Outlook erstellt wird.

              wenn jmd. ne bessere Lösung hat, bitte posten

              Thx

              Kommentar

              Lädt...
              X