Autor Beitrag
Dusty
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 62

Windows XP
Delphi 5 Enterprise
BeitragVerfasst: So 08.06.03 23:08 
Das AOL Postfach lässt sich nicht mit POP3 lesen, aber es gibt einen Zugang über den IMAP Server. Ich kann mich auch einloggen, aber beim Versuch, die Email zu lesen, handel ich mir nur eine Exception ein :-(


Das Programm:
==========
Formular mit IdMessage1, IdIMAP41, Edit1, Edit2, Button1.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
procedure TForm1.Button1Click(Sender: TObject);
var sl : TStringList;
begin
   IdIMAP41.connect; // User, Passwort und Host in Komponente hinterlegt
   sl := TStringList.Create;
   try
      case IdIMAP41.ConnectionState of
         csAny               : Edit1.Text := 'csAny';
         csNonAuthenticated  : Edit1.Text := 'csNon';
         csAuthenticated     : Edit1.Text := 'csAut';   // dies ist mein Conn. State
         csSelected          : Edit1.Text := 'csSel';
      else
                               Edit1.Text := 'indef';
      end;
      if not IDIMAP41.ListMailBoxes(sl) then
         ShowMessage('ListMailBoxes failed'); // wird nicht angezeigt, aber sl ist leer
      Edit2.Text := IntToStr(IdIMAP41.RetrieveMailBoxSize); // hier Exception
      IdIMAP41.RetrieveHeader(1,idMessage1); // hier auch, wenn Zeile darüber auskommentiert
      Edit1.Text := idMessage1.ReceiptRecipient.Name; // hier komme ich schon gar nicht mehr hin
       finally
      IdIMAP41.Disconnect;
      sl.Free;
   end;
end;


Die Fehlermeldung:
=============
"Unable to execute command, wrong connection state;Current connection state: Authenticated.'

Wer kann helfen?

Moderiert von user profile iconUGrohne: Delphi-Tags hinzugefügt
Biggs
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mo 16.06.03 01:19 
Zwar spät, aber vielleicht kannst du ja noch Hilfe brauchen.

Bevor du auf .RetrieveMailBoxSize zugreifen kannst, muss die Mailbox zwingend selected sein, mithin sich ConnectionState im Modus "selected" befinden.

Erst dann kann man die Größe der "selektierten" Mailbox ermitteln, auf Messages in der entspr. Mailbox zugreifen usw.

HTH

Henri
Dusty Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 62

Windows XP
Delphi 5 Enterprise
BeitragVerfasst: Mo 16.06.03 15:06 
Das mit der Selektierung habe ich schon herausgefunden durch Probieren.
Ich kann jetzt auch in einer Schleife mit IdIMAP41.RetrieveHeaders die Header lesen. Wenn ich statt RetrieveHeaders jedoch Retrieve nehme, um die ganze Email holen zu lassen, bleibt das Programm bei der zweiten, spätestens aber bei der dritten Email "kommentarlos" stehen. Mit dem Debugger komme ich also bis zum Retrieve-Befehl und dann steht das Programm. ZoneAlarm zeigt an, dass keine Datenübertragung stattfindet. Über Start - Programm zurücksetzen lässt sich das Delphi-Programm ohne murren beenden. Es hat sich also nicht aufgehängt oder so. Der Status der Mailbox ist immer csSelected.

Weil ich nicht weiß, wie ich die Anzahl der vorhandenen Emails abrufe, lasse ich die Header in einer TRY EXCEPT FINALLY Schleife laufen und lasse es also auf eine Exception ("FETCH failed" oder so ähnlich) ankommen. Kurz: Wie frage ich die Anzahl der vorhandenen Emails ab?