IMAP - Auf der Such nach der richtigen UID

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

  • IMAP - Auf der Such nach der richtigen UID

    Hallo Zusammen!

    Ich habe mich mit imap_open zu meinem POP3 - Server verbunden. Mit den ganzen Funktionen wie:
    Zitat:
    imap_headers, imap_fetchheader, imap_header, und imap_headerinfo
    bekomme ich einfach nicht die korrekte mail_id angezeigt.

    Wenn ich z.B. 93 Mails im Postfach habe und mir mit den oben genannten Funktionen die Infos über den Header hole, bekomme ich immer als mail_id 93..... weil es einfach durchnummeriert wird und die mail_id eigentlich die Indexnummer des Postfaches ist.

    Wenn ich mich jetzt via telnet zum Postfach verbinde und mir die mail_id von der mail 107 ausgebe, bekomme ich die richtige ID: Zitat:
    0BjpV6-1X9WRw2Pvz-0004RC
    Wie komme ich mit IMAP an die richtige ID und nicht an den Index der Mail?

    Wenn ich mir mit der Funktion: imap_fetch_overview die Informationen abrufe, bekomme ich sowohl vom objekt:
    message_id, references,uid als auch von msgno immer diese Indexnummer und nicht die mail_id vom Mailserver.


    Bin am verzweifeln, kann mir jemand helfen?

    Vielen Dank
    urkman

  • #2
    imap_uid()

    Kommentar


    • #3
      imap_uid() funktioniert leider nicht mit POP3.

      Siehe: PHP: imap_uid - Manual

      Viele Grüße
      urkman

      Kommentar


      • #4
        In den User Comments zu dieser Funktion findest du Workarounds für POP3.

        Kommentar


        • #5
          Hallo,

          erst mal vielen Dank für die Hilfe.

          Das Problem ist aber, dass die message_id nicht die UID ist.
          Dieser Kommentar ist leider einfach falsch.

          Die zweite Lösung ist nicht wirklich elegant, da hier Socketverbindungen
          notwendig sind. Außerdem gibt's dann noch Probleme mit SSL und Co., die
          von imap_open bereits gelöst und prima gekapselt sind.

          Daher bin ich noch auf der Suche nach eine bessern Lösung, wie die
          beschriebenen.

          Viele Grüße
          urkman

          Kommentar


          • #6
            Zitat von urkman78 Beitrag anzeigen
            Das Problem ist aber, dass die message_id nicht die UID ist.
            Dieser Kommentar ist leider einfach falsch.
            Da geb ich dir Recht, es ist nicht dasselbe, aber die IMAP UID und die POP3 UID sind auch nicht dasselbe, sondern verschieden spezifiziert. Insbesondere ist die POP3 UID nicht in jedem Falle tatsächlich eindeutig, schon deshalb würde ich mich da eher auf die Message-ID verlassen, auch wenn die nicht so elegant als Liste abzuholen geht.

            Gruß,

            Anja
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Hallo Anja,

              meines Wissens wir die Message-ID vom Mail-Client gesetzt.
              Es ist also leider nicht einmal sicher gestellt, dass eine Mail
              überhaupt ein Message-ID hat. Bei meinen Tests konnte ich
              dies auch bestätigen.

              Es scheint aber ohnehin so zu sein, dass alle IMAP Funktionen
              mit den POP3-UIDLs nichts anfangen können.

              Gehe jetzt so vor, dass ich mir auf Basis von Betreff, Datum,
              Zeit und Absender selbst eine "UIDL" baue, um eine Mail wieder-
              zuerkennen. Leider produziert man damit einen rießigen Overhead,
              da man ab der zweiten Prüfung theoretisch wieder alle Mails (zumindest
              die Headerdaten) abrufen muss, um die ID neu zu bauen und zu
              vergleichen.

              Ein andere Lösung fällt mit allerdings leider nicht ein.
              Besser Idee außer einen POP3-Client auf Socket-Basis einzusetzen?

              Viele Grüße
              Frank

              Kommentar


              • #8
                Hallo Frank,

                Zitat von urkman78 Beitrag anzeigen
                meines Wissens wir die Message-ID vom Mail-Client gesetzt.
                nur in Sonderfällen oder bei größeren Unternehmen. Normalerweise generiert der SMTP-Server die noch während der SMTP-Session.

                Der Overhead in deiner Lösung ist wirklich nicht zu vernachlässigen, allerdings sehe ich keine Möglichkeit, das sonderlich zu optimieren.

                Wenn eine eigene POP-Implementation für dich nicht in Frage kommt, wie sieht es eigentlich mit externen frei verfügaren Klassen aus? Ich bin mir fast sicher, dass es da bereits etwas geeignetes geben könnte.

                SSL ist bei dir Pflicht, ja?

                Eine Hybridvariante hätte ich dann doch noch auf Lager. Eine selbst entwickelte, auf Sockets basierende Lösung mit sicherer Anmeldung (APOP), um die UIDL abzurufen. Die Nachricht(en) selbst holst du dann über SSL mit den IMAP-Funktionen. Dabei muss man aber noch ein paar Tricks anwenden, um die Integrität sicherzustellen, falls zwischen diesen beiden Sessions eine neue Mail eingetroffen ist. Da hätte ich aber auch schon eine Idee. Ob das ganze dann aber performanter ist, als das Abrufen aller Header, steht auf wackeligen Beinen.

                Gruß,

                Anja
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  [FONT=Verdana]Hallo Anja,

                  erst mal vielen Dank für Deine Mühen.

                  Das Problem ist, dass der POP3-Client nur ein kleiner Teil eines größeren Projektes ist, welches beliebige Endanwender nutzen können. Das heißt, dass ich bis heute gar nicht weiß, welche verschiedenen Authentifizierungsmethoden ich benötigen werde. Ich muss mir deshalb alle Türen offen halten.

                  Die UIDL kann ich per Socket abholen. Das wäre nicht das Problem. Aber wie holst Du auf Basis der UIDL dann mit den IMAP-Funktionen die Mails ab? Ich hatte damit nur wenig Erfolg.
                  Ich bin mit der bei vielen IMAP-Funktionen beschriebenen Optio[/FONT][FONT=Verdana]n FT_UID leider auch nicht erfolgreich gewesen. Davon abgesehen gibt es diese Option nicht bei allen nötigen IMAP-Funktionen. Ich habe den Eindruck, dass die UIDL in der Verbindung mit IMAP-Funktionen und POP3 überhaupt nicht funktionieren.

                  Viele Grüße
                  Frank
                  [/FONT]

                  Kommentar


                  • #10
                    Zitat von urkman78 Beitrag anzeigen
                    [FONT=Verdana]Die UIDL kann ich per Socket abholen. Das wäre nicht das Problem. Aber wie holst Du auf Basis der UIDL dann mit den IMAP-Funktionen die Mails ab?[/FONT]
                    Das klingt doch schonmal gut. Die UIDL ist doch ein Array mit der Nachrichtennummer als Schlüssel und der UID als Wert. Du prüfst dann die bereits bekannten UIDs und streichst sie z. B. aus dem Array raus. Alle übrigen Einträge im Array enthalten dann als Schlüssel die Nachrichtennummern, die du noch abrufen musst.

                    Gruß,

                    Anja
                    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                    Super, danke!
                    [/COLOR]

                    Kommentar


                    • #11
                      Darf man erfahren warum du in einer POP3-Session eine IMAP-UID benötigst?

                      Kommentar

                      Lädt...
                      X