php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 17-08-2009, 09:53
urkman78
 Registrierter Benutzer
Links : Onlinestatus : urkman78 ist offline
Registriert seit: Aug 2009
Beiträge: 7
urkman78 befindet sich auf einem aufstrebenden Ast
Unhappy 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
Mit Zitat antworten
  #2 (permalink)  
Alt 17-08-2009, 10:03
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

imap_uid()
Mit Zitat antworten
  #3 (permalink)  
Alt 17-08-2009, 10:13
urkman78
 Registrierter Benutzer
Links : Onlinestatus : urkman78 ist offline
Registriert seit: Aug 2009
Beiträge: 7
urkman78 befindet sich auf einem aufstrebenden Ast
Angry

imap_uid() funktioniert leider nicht mit POP3.

Siehe: PHP: imap_uid - Manual

Viele Grüße
urkman
Mit Zitat antworten
  #4 (permalink)  
Alt 17-08-2009, 10:33
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

In den User Comments zu dieser Funktion findest du Workarounds für POP3.
Mit Zitat antworten
  #5 (permalink)  
Alt 17-08-2009, 14:30
urkman78
 Registrierter Benutzer
Links : Onlinestatus : urkman78 ist offline
Registriert seit: Aug 2009
Beiträge: 7
urkman78 befindet sich auf einem aufstrebenden Ast
Standard

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
Mit Zitat antworten
  #6 (permalink)  
Alt 18-08-2009, 01:21
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
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
Mit Zitat antworten
  #7 (permalink)  
Alt 20-08-2009, 19:44
urkman78
 Registrierter Benutzer
Links : Onlinestatus : urkman78 ist offline
Registriert seit: Aug 2009
Beiträge: 7
urkman78 befindet sich auf einem aufstrebenden Ast
Standard

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
Mit Zitat antworten
  #8 (permalink)  
Alt 20-08-2009, 20:57
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo Frank,

Zitat:
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
Mit Zitat antworten
  #9 (permalink)  
Alt 20-08-2009, 21:17
urkman78
 Registrierter Benutzer
Links : Onlinestatus : urkman78 ist offline
Registriert seit: Aug 2009
Beiträge: 7
urkman78 befindet sich auf einem aufstrebenden Ast
Standard

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
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
Mit Zitat antworten
  #10 (permalink)  
Alt 20-08-2009, 21:40
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von urkman78 Beitrag anzeigen
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?
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
Mit Zitat antworten
  #11 (permalink)  
Alt 21-08-2009, 08:27
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Darf man erfahren warum du in einer POP3-Session eine IMAP-UID benötigst?
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Nach einem Join, die richtigen Variablen fetchen???? chris1980 SQL / Datenbanken 3 25-02-2008 20:09
[OOP] Richtigen Template-Pfad bekommen PHP-Master07 PHP Developer Forum 3 28-12-2007 19:05
Domain auslesen für richtigen Pfad! mrVAIN PHP Developer Forum 4 27-01-2004 13:19
[OOP] Fehlermeldungen an der richtigen stelle Anzeigen! deschmiddi PHP Developer Forum 29 28-12-2003 23:31
findet nicht den richtigen pfad all4one PHP Developer Forum 1 27-11-2001 14:24

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:37 Uhr.