![]() |
INDY pop3
Hallöchen Community,
ich bräuchte einmal kurz Hilfe. Ich möchte in einem selbst programmierten Programm, E-Mails von einem pop3 Server herunterladen und sie zur weiteren Verwendung speichern. Nun mein Problem: Wie kann ich vergleichen, ob ich genau diese E-Mail schon erhalten habe ? Gibt es im Header vielleicht eine eindeutige ID zum vergleichen ... ? Bin für jeden Tipp dankbar, Suchfunktionen hier, auf anderen Portalen und/oder google haben keinen Erfolg zu tage gebracht. MfG Primusio |
Re: INDY pop3
Es gibt zum POP3 Protokoll die Erweiterung
Code:
Der Parameter msg-num gibt die Messagenummer an, zu der Du die "eindeutige" (sessionunabhängige) Id haben möchtest. Lässt Du diesen Parameter weg, erhälst Du eine Liste mit den IDs für alle Nachrichten.
UIDL [msg-num]
ACHTUNG: Die ID muss lt. Protokoll nicht wirklich eindeutig sein. Das RFC schl'gt sogar vor einen MD5 dafür zu nutzen, welcher von Natur aus auch nicht eindeutig ist. Um evtl. entstehende Probleme durch doppelte IDs muss sich der Client (also Du) kümmern. In der Praxis ist dieser Fall aber äußerst unwahrscheinlich. ...:cat:... |
Re: INDY pop3
Erst einmal danke für die schnelle Antwort aber wie kann ich die UIDL abrufen ?
Bei idMessage finde ich es nicht. Und dies ist ja die einzige Komponente die jede E-Mail bei mir durchgeht. MfG Primusio |
Re: INDY pop3
Die TIdPop3 Komponente, nicht die Message selbst, unterstützt das POP3 Protokoll und diese implementiert auch die Methode UIDL ;)
...:cat:... |
Re: INDY pop3
Jetzt muss ich noch einmal ganz blöd nachfragen, wie kann ich für jede Mail die UIDL ermitteln ?
Ich lese die Informationen folgend herraus und schreibe die Informationen in ein ListView.
Delphi-Quellcode:
Wo kann ich jetzt, wie die UIDL auslesen ?
procedure TForm1.Button1Click(Sender: TObject);
var index : integer; li : TListItem; begin pop.Host := 'SERVER'; pop.Username := 'USER'; pop.Password := 'PASS'; pop.Connect(); for index := 1 to pop.CheckMessages do begin pop.Retrieve(index,idMessage1); li := ListView1.Items.Add; li.Caption := IdMessage1.From.Text; li.SubItems.Add(IdMessage1.Subject); li.SubItems.Add(DateToStr(IdMessage1.Date)); idMessage1.Clear; end; pop.Disconnect; end; MfG Primusio |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz