Entwickler-Ecke

Internet / Netzwerk - [POP3 / IMAP] Probleme mit Email-Checker...


zakoon - Sa 15.11.08 16:33
Titel: [POP3 / IMAP] Probleme mit Email-Checker...
Hallo zusammen,
ich möchte eine kleine Anwendung schreiben, die mir anzeigt, ob auf meinem Email-Account ungelesene Nachrichten auf mich warten.

Ich habe es mit Indys TidImap4 und TidPop3 und jeweils Konten bei GMX und Web.de versucht.

POP3:
Mit POP3 hat zwar die Verbindung immer super geklappt, aber leider gibt mir Idpop31.CheckMessages die Anzahl aller Emails auf dem Server zurück, nicht nur der neuen. Um als nur die neuen Emails zu erhalten, müsste ich die Message-IDs lokal speichern und mit den ID's auf dem Server vergleichen. Leider kann diese Methode aber nicht erkennen, ob ich die Email bereits mit meinem Emailprogramm abgerufen habe, oder die Email über Web-Mail schon gelesen habe.

IMAP:
Bei IMAP gibt es ja die Eigenschaft idImap41.MailBox.UnseenMsgs, mit der ich die oben beschriebenen Schwierigkeiten leicht umgehen kann. Leider klappt bei IMAP aber die Authentifizierung nicht zuverlässig. Mit dem unten angegeben Code konnte ich zwar prima von Web.de die Daten auslesen, aber mit GMX klappt es gar nicht, hier bekomme ich schon bei dem Connect eine Exception (EIdClosedSocket).

Kann mir jemand einen Tipp geben, wie ich diese Aufgabe lösen könnte?
Vielen Dank! Zak.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
begin
    idImap41.Host := 'imap.gmx.net'// bzw. 'imap.web.de'
    idImap41.Username:= UserNr;
    idImap41.Password:= Pass;
    if idImap41.Connect(true) then  // <--- Exception bei GMX
    begin
      showMessage('Connected');
      if idImap41.ConnectionState = csAuthenticated then
        if IdIMAP41.SelectMailBox('inbox'then
        begin
          showMessage('unseen:'+IntToStr(idImap41.MailBox.UnseenMsgs));
          showMessage('complete:'+IntToStr(IdIMAP41.MailBox.TotalMsgs));
        end;
      idImap41.Disconnect;
    end;
end;


Moderiert von user profile iconmatze: Code- durch Delphi-Tags ersetzt


LexXis - Sa 15.11.08 20:30
Titel: Re: [POP3 / IMAP] Probleme mit Email-Checker...
user profile iconzakoon hat folgendes geschrieben Zum zitierten Posting springen:


Delphi-Quelltext
1:
if idImap41.Connect(true) then  // <--- Exception bei GMX                    



Erwartet die Funktion nicht ein Integer als Parameter?


zakoon - So 16.11.08 01:57
Titel: Re: [POP3 / IMAP] Probleme mit Email-Checker...
user profile iconLexXis hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconzakoon hat folgendes geschrieben Zum zitierten Posting springen:


Delphi-Quelltext
1:
if idImap41.Connect(true) then  // <--- Exception bei GMX                    



Erwartet die Funktion nicht ein Integer als Parameter?


Nein, Boolean. true für AutoLogin, false für kein Autologin (man muss dann die login-funktion etc. selbst ausführen).


LexXis - So 16.11.08 12:23

Verwendest du Indy 10? Ich verwende noch die 9er Version, da erwartet die Funktion ein Integer zwecks Timeout und versucht automatisch sich einzuloggen (ohne vorher nochmal nachzufragen). Information ist eben alles ;)

mfg


matze - So 16.11.08 12:37

du hast aber schon einen "Premium"-Account bei GMX oder? Denn bei den normalen Freemail Accounts wird ja IMAP gar nicht angeboten.


zakoon - Mo 17.11.08 15:10

user profile iconmatze hat folgendes geschrieben Zum zitierten Posting springen:
du hast aber schon einen "Premium"-Account bei GMX oder? Denn bei den normalen Freemail Accounts wird ja IMAP gar nicht angeboten.


Argh .... Nein, daran lags. Danke, da wäre ich 100 Jahren nicht drauf gekommen! Hab GMX schon seit Ewigkeiten neben meinen ganzen IMAP Konten im Thunderbird, bin gar nicht drauf gekommen, dass das ja nur ein POPer ist... ^^


matze - Mo 17.11.08 18:14

Ja manchmal liegt die Lösung doch so nah!