Hallo,
Indy10 hat leider an vielen Stellen "kleine Fehler", die einem das leben schwer machen. Daher würde ich mich über dieser Fehler nicht wundern. Das Abrufen von E-Mails klappte bei mir bislang aber problemlos. Mir ist aufgefallen, dass es oft Probleme mit der IdMessage Komponenten und Clear gibt. Besser mit Create und Free arbeiten.
Hoffe es hilft
Tom
Delphi-Quellcode:
...
with IdPOP
do
begin
{ Timeout setzen }
ConnectTimeout := 10000 ;
{ Ggf. noch angemeldet, abmelden }
if Connected
then Disconnect ;
{ Parameter }
Host := gMailPOPSER ;
Port := gMailPOPPOR ;
Username := gMailUSRNAM ;
Password := gMailPASWRD ;
{ Anmelden }
try
Connect ;
except
on e:
exception do
begin
{ Abbrechen }
Exit ;
end ;
// on e:exception
end ;
// try
{ Anzahl holen }
iMailCount := CheckMessages ;
{ Schleife }
for iLoop := 1
to iMailCount
do
begin
{ Speichern }
SaveMailToFile(iLoop) ;
end ;
// for iLoop
{ Abmelden }
Disconnect ;
end ;
// with IdPOP
...
--------------------
procedure TUN_MailLocal_Form.SaveMailToFile
( iMessageNumber : Integer ) ;
var
iMessage : TIdMessage ;
iFileName :
String ;
begin
{ Message anlegen }
iMessage := TIdMessage.Create(Self) ;
iMessage.NoDecode := TRUE ;
iMessage.NoEncode := TRUE ;
iMessage.Clear ;
{ Abrufen }
IdPOP.Retrieve(iMessageNumber,iMessage) ;
{ Datei }
iFileName := '
C:\Temp\' + GetGUID + '
.eml' ;
{ In Datei speichern }
iMessage.SaveToFile(iFileName,FALSE) ;
{ Vom Server löschen }
IdPOP.Delete(iMessageNumber) ;
{ Löschen }
iMessage.Free ;
end ;