AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Problem mit Retrieveheader
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Retrieveheader

Ein Thema von DerSkw · begonnen am 12. Aug 2004 · letzter Beitrag vom 21. Aug 2006
Antwort Antwort
DerSkw

Registriert seit: 5. Aug 2004
4 Beiträge
 
#1

Problem mit Retrieveheader

  Alt 12. Aug 2004, 00:06
Also, ich hab hier mal einen Code, der meine mails abholt und die anlagen mit ner id speichert, aber wenn mehr als eine mail auf dem konto ist bekomme ich eine "Zugriffs Verletzung" Meldung.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var PartIndex,i : Integer;
         id_buf : String;
begin
randomize;
 IdPop31.Host:='pop.onlinehome.de';
 IdPop31.Username:='Username';
 IdPop31.Password:='Passwort';
 IdPop31.Connect();

for i:=1 to idpop31.CheckMessages do
begin
 IdPop31.Retrieveheader(i,IdMessage1);
  for PartIndex:=0 to IDMessage1.MessageParts.Count-1 do
   begin
    if(IdMessage1.MessageParts.Items[Partindex] is TIdAttachment) then
     Begin
      id_buf:=((copy(TimeToStr(now),1,2)+copy(TimeToStr(now),4,2)+copy(TimeToStr(now),7,2))+IntToStr(random(10))+IntToStr(random(10)));
      if fileexists(Extractfilepath(paramstr(0))+'\'+id_buf+'.rwgf') then
       deletefile(Extractfilepath(paramstr(0))+'\'+id_buf+'.rwgf');
      TIdAttachment(IdMessage1.MessageParts.Items[Partindex]).SaveToFile(Extractfilepath(paramstr(0))+'\'+id_buf+'.rwgf');
     end;
   end;
 idmessage1.Free;
 idpop31.Delete(i);
end;
 IdPop31.Disconnect;
 showmessage('done');
end;
Schonmal Danke für die Hilfe!

mfg DerSkw
  Mit Zitat antworten Zitat
DerSkw

Registriert seit: 5. Aug 2004
4 Beiträge
 
#2

Re: Problem mit Retrieveheader

  Alt 19. Aug 2004, 14:09
Kann oder will mir hier keiner helfen?
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#3

Re: Problem mit Retrieveheader

  Alt 19. Aug 2004, 14:16
Hi,

Ohne es auszutesten würde ich die Zugriffsverletzung mal der Zeile

 idmessage1.Free; in die Schuhe schieben. Ich weiss nicht wo du das idmessage1 erzeugst, aber aufgrund der Bezeichnung gehe ich mal davon aus, dass es eine Komponente ist. Außerdem übernimmt es RetreiveHeaders nicht als var.

Versuchs auf alle Fälle mal ohne das free.

grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
DerSkw

Registriert seit: 5. Aug 2004
4 Beiträge
 
#4

Re: Problem mit Retrieveheader

  Alt 19. Aug 2004, 14:26
OK ohne idmessage.free geht es, aber die anhänge werden nicht gespeichert!
  Mit Zitat antworten Zitat
DerSkw

Registriert seit: 5. Aug 2004
4 Beiträge
 
#5

Re: Problem mit Retrieveheader

  Alt 19. Aug 2004, 15:29
Mir fällt gerade auf, dass das Prog die mails garnicht bearbeitet, sondern nur löscht, hier ist der neue code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 test_lab.Caption:='ready';
 timer1.OnTimer(form1);
 timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var PartIndex,i : Integer;
         id_buf : String;
begin
randomize;
 IdPop31.Host:='pop.onlinehome.de';
 IdPop31.Username:='user';
 IdPop31.Password:='pass';
 IdPop31.Connect();
 test_lab.Caption:='ready';
for i:=1 to idpop31.CheckMessages do
begin
 IdPop31.Retrieveheader(i,IdMessage1);
  for PartIndex:=0 to IDMessage1.MessageParts.Count-1 do
   begin
    if(IdMessage1.MessageParts.Items[Partindex] is TIdAttachment) then
     Begin
      id_buf:=((copy(TimeToStr(now),1,2)+copy(TimeToStr(now),4,2)+copy(TimeToStr(now),7,2))+IntToStr(random(10))+IntToStr(random(10)));
      if fileexists(Extractfilepath(paramstr(0))+'\'+id_buf+'.rwgf') then
       deletefile(Extractfilepath(paramstr(0))+'\'+id_buf+'.rwgf');
      TIdAttachment(IdMessage1.MessageParts.Items[Partindex]).SaveToFile(Extractfilepath(paramstr(0))+'\'+id_buf+'.rwgf');
      shellexecute(handle,'open',PChar(Extractfilepath(paramstr(0))+'\worker.exe '+Extractfilepath(paramstr(0))+'\'+id_buf+'.rwgf'),nil,nil,sw_show);
     end;
   end;
 idpop31.Delete(i);
 test_lab.Caption:=inttostr(i);
end;
 IdPop31.Disconnect;
 idmessage1.Free;
 test_lab.Caption:='done';

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 timer1.Enabled:=false;
end;
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Problem mit Retrieveheader

  Alt 21. Aug 2006, 10:39
kann es sein das nach deiner methode die heruntergeladendaten zwar auf dem server gelöscht werden aber kein inhalt lokal gespeichert wird?
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Problem mit Retrieveheader

  Alt 21. Aug 2006, 16:09
Das Message-Objekt musst Du vorher auch erzeugen. Ausserdem solltest Dir das Ergebnis von Checkmessages in einer Variablen speichern - sonst hat der Schleifenindex jedesmal einen anderen Wert, da Du ja die Mails mit Delete löschst:
Delphi-Quellcode:
MessageCount := idpop31.CheckMessages;
for i := 1 to MessageCount do
begin
   IdMessage1 := TIdMessage.Create(NIL);
   IdPop31.Retrieveheader(i,IdMessage1);
   ...
   idpop31.Delete(i);
   IdMessage1.Free;
end;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz