browserbasierter Emailclient

topf

Mitglied
Hallo,
ich habe ein relativ coole Klasse entwickelt, mit der ich meine eMails abfrage, inklusive Anhängeverwaltung, und dann in einer DB abspeichere.
Jetzt mein Problem, das Abfragen geschieht per 5' Crontab und meine Logik war :

Ziehe alle Mails mit einem Empfangsdatum, welches später ist als die letzte Überprüfung ( vor 5 Minuten) ist.

Nur jetzt komme ich ja garnich an das Empfangsdatum ( Serverinfo ? ) der Mail heran oder doch?
Die Mail selbst hat ja nur ihr Sendedatum, welches manipuliert (SPAM) oder je nach Zeitzone in der "Zukunft/Vergangenheit" liegen kann

Oder sollte ich vor dem Speichern überprüfen, ob die MessageId der eMail, welche ja "einzigartig" sein sollte, schon in meiner Tabelle existiert?

Ich frage mich derzeit, was wohl die adquateste Herangehensweise ist.

Ich bin für jeden Gedanken dankbar!
 
Zuletzt bearbeitet:
Wenn du es mit Prüfung machst, also welche schon in der db sind und welche nicht dann kann das je nach anzahl der Mails eine lange zeit dauern.


Die Frage ist brauchst du das alle 5 Minuten? Oder reicht es nicht auch wenn der User sich einloggt das, es dann abgespeichert wird? Und dann von dort wo es abgerufen wird einfach gelöscht wird?
 
Falls du die E-Mails nicht löschen möchtest, weil du sie z. B. auch zuhause abrufen möchtest o. ä., würde ich die Möglichkeit eines Hashs in Betracht ziehen.

Sprich: Body der E-Mail wird ausgelesen und ein möglichst großer Hash daraus gebildet.
Dementsprechend müsstest du beim erstmaligen Einlesen in die Datenbank genau diesen Hash speichern.
Dann eben prüfen ob der Hash bereits in der DB nicht, falls nein, rein damit. Falls ja, eben ignorieren und weiter zur nächsten E-Mail.

Seit PHP 5.1.2 bringt PHP neue Hash Funktionen mit sich.
 
Das mit dem Hash hatte ich auch in Betracht gezogen, dürfte allerdings relativ lange dauern, wenn man es gründlich machen will.

Wie arbeiten denn zb Programme wie Thunderbird, Outlook oder das mac-pendant Mail? Die haben meines Wissens doch auch nicht jede Mail doppelt und dreifach drin.

Das mit der Empfangszeit ist aber unmöglich?

Danke trotzdem schonmal für die Ansätze.
 
Zuletzt bearbeitet:
Hallo,

bei POP3 gibt es den Befehl UIDL, das eindeutige IDs zu den Nachrichten im Postfach anzeigt. Bei IMAP sollte es etwas ähnliches geben, also einfach mal die RFC durchlesen. Notfalls gäbe es auch noch die Message-ID im Kopfbereich einer E-Mail.

Grüße,
Matthias
 
Hmm,

das Problem mit dem unique-string auf pop3-Seite hat sich gelöst.
Nur, bei einem richtigen imap Stream kann ich ja per imap_uid() eine zugehörige unique id bekommen.

Sollte ich imap-Postfächer zunächst auch wie ein pop3-Fach behandeln um den nachrichtenzugehörigen unique identifier zu bekommen?

Ich denke das ist ratsam oder?

Gruß Lars
 
Zuletzt bearbeitet:
Zurück