Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy Pop3 - MsgID und UID leer (https://www.delphipraxis.net/93201-indy-pop3-msgid-und-uid-leer.html)

Gecko 2. Jun 2007 00:13


Indy Pop3 - MsgID und UID leer
 
Hallo,

habe mit der Indy POP3 Komp. von meinem Web.de Postfach Mails abgeholt.
Seltsamerweise sind aber MsgID und UID völlig leer! Kann sich das jemand erklären?

Wenn ich damit lokal von meinem Hamster-Testserver was abhole, ist dort ein Wert drin, mit dem ich die Nachr. identifizieren kann!

Gecko 10. Jun 2007 03:35

Re: Indy Pop3 - MsgID und UID leer
 
Indy POP Experten sind hier aber rar gesät :-(

Mastersurfer84 10. Jun 2007 09:02

Re: Indy Pop3 - MsgID und UID leer
 
Hallo,

ich hab gerade mit meinem Postfach bei web.de probiert, da geht es.

Du brauchst dazu ein TidPOP3 und eine TIdMessage auf der Form.
Dann verbindest du mit dem Web.de-Server, und kannst dann mit diesem Code jede einzelne Mail in die IdMessage laden, von hier aus kannst du dann die MsgID bzw. UID auslesen:

Delphi-Quellcode:
MailIndex := 1; //MailIndex ist die x-te Nachricht im Postfach
POP.RetrieveHeader(MailIndex, Msg);
ShowMessage(Msg.UID + #13#10 + Msg.MsgId);
Hat bei mir funktioniert, ist aber natürlich davon abhängig, wie auf dem Weg vom Absender die Felder gefüllt werden.

Grüße

Gecko 10. Jun 2007 11:52

Re: Indy Pop3 - MsgID und UID leer
 
Wie prüfen denn Outlook und co ob eine Mail schon vorhanden ist, sofern die Option (Mails auf dem Server belassen) aktiv ist?
Wenn die UID nicht zuverlässig ist, wie dann?

Mastersurfer84 10. Jun 2007 16:20

Re: Indy Pop3 - MsgID und UID leer
 
Ich hab nochmal in der Indy Hilfe nachgeschaut, du kannst in der POP3-Sitzung mit dem Server auch über eine Funktion die UID erfragen.
Sieht dann so aus:

Delphi-Quellcode:
var
  MsgUID: TStringList;
begin
  MailIndex := 1; //MailIndex ist die x-te Nachricht im Postfach
  POP.RetrieveHeader(MailIndex, Msg);

  MsgUID := TStringList.Create;
  try
    POP.UIDL(MsgUID, MailIndex);
    ShowMessage(MsgUID.Text + #13#10 + Msg.MsgId);
  finally
    MsgUID.Free;
  end;
end;
Über diese UID, die der Empfängerserver (als Bsp. web.de) der Mail gibt, sollte jede mail eindeutig identifizierbar sein!


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz