Entwickler-Ecke
Internet / Netzwerk - Emails abholen mit IMAP4 (TIdIMAP4)
Dusty - So 08.06.03 23:08
Titel: Emails abholen mit IMAP4 (TIdIMAP4)
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.
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; sl := TStringList.Create; try case IdIMAP41.ConnectionState of csAny : Edit1.Text := 'csAny'; csNonAuthenticated : Edit1.Text := 'csNon'; csAuthenticated : Edit1.Text := 'csAut'; csSelected : Edit1.Text := 'csSel'; else Edit1.Text := 'indef'; end; if not IDIMAP41.ListMailBoxes(sl) then ShowMessage('ListMailBoxes failed'); Edit2.Text := IntToStr(IdIMAP41.RetrieveMailBoxSize); IdIMAP41.RetrieveHeader(1,idMessage1); Edit1.Text := idMessage1.ReceiptRecipient.Name; 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
UGrohne: Delphi-Tags hinzugefügt
Biggs - 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 - 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?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!