Autor Beitrag
zakoon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



BeitragVerfasst: Sa 15.11.08 16:33 
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.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 170
Erhaltene Danke: 3



BeitragVerfasst: Sa 15.11.08 20:30 
user profile iconzakoon hat folgendes geschrieben Zum zitierten Posting springen:

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



Erwartet die Funktion nicht ein Integer als Parameter?
zakoon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



BeitragVerfasst: So 16.11.08 01:57 
user profile iconLexXis hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconzakoon hat folgendes geschrieben Zum zitierten Posting springen:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 170
Erhaltene Danke: 3



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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.

_________________
In the beginning was the word.
And the word was content-type: text/plain.
zakoon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Mo 17.11.08 18:14 
Ja manchmal liegt die Lösung doch so nah!

_________________
In the beginning was the word.
And the word was content-type: text/plain.