Hallo ich schreibe gerade an einen Email Clienten,
es funzt soweit auch alles bis auf folgendes.
Das Programm hat eine Mail.XML wo es die wichtigesten Daten
(Name, EMail, Datum, Uhrzeit, Betreff, Dateinamen) drin speichert, der
Header und der Text kommen in extra Datein.
Komisch ist der Eintrag in die
XML Datenbank befindet
sich unter dem wo die Datein gespeichert werden.
Es werden alle 29 Emails in die
XML geschrieben ABER
Datein sind es nur 20-22. Es gehen also ca. 10 Mails
verloren...
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var index : integer;
i, z: integer;
filename: string;
speichern: string;
begin
try
ClientDataSet1.Active := False;
ClientDataSet1.IndexFieldNames := 'Konto';
ClientDataSet1.Filtered := True;
ClientDataSet1.LoadFromFile(extractfilepath(application.exename)+'/TekKonten.xml');
ClientDataSet1.Open;
while not ClientDataSet1.Eof do
begin
IdPOP31.Host := ClientDataSet1.FieldByName('Pop').AsString;
IdPOP31.Username := ClientDataSet1.FieldByName('Username').AsString;
IdPOP31.Password := ClientDataSet1.FieldByName('Password').AsString;
IdPOP31.Connect;
for index := 1 to IdPOP31.CheckMessages do
begin
IdPOP31.Retrieve(index,idMessage1);
Memo1.Text := IdMessage1.Headers.Text;
for Z := 0 to Memo1.Lines.Count - 1 do
begin
if Pos('Message-Id:', Memo1.Lines[Z]) > 0 then
begin
speichern := Memo1.Lines[Z];
delete(speichern,1,pos('<',speichern));
delete(speichern,pos('@',speichern),pos('>',speichern));
end;
end;
Memo1.Lines.SaveToFile(Progverz+'/Nachrichten/'+speichern+'h.txt');
IdMessage1.Body.SaveToFile(Progverz+'/Nachrichten/'+speichern+'.html');
IdMessage1.Clear;
end;
IdPOP31.Disconnect;
ClientDataSet1.Next;
end;
ClientDataSet1.Close;
except
ShowMessage(' Keine Datenbank gefunden, bitte importieren!');
end;
if TreeView1.Selected.AbsoluteIndex > 0 then
begin
try
ClientDataSet2.Active := False;
ClientDataSet2.IndexFieldNames := 'Id';
ClientDataSet2.Filter := 'Folder = '+QuotedStr(TreeView1.Selected.Text);
ClientDataSet2.Filtered := True;
ClientDataSet2.LoadFromFile(extractfilepath(application.exename)+'/TekOrdner.xml');
ClientDataSet2.Open;
while not ClientDataSet2.Eof do
begin
try
ClientDataSet3.Active := False;
ClientDataSet3.IndexFieldNames := 'Id';
ClientDataSet3.Filter := 'Folder = '+QuotedStr(ClientDataSet2.FieldByName('Id').AsString);
ClientDataSet3.Filtered := True;
ClientDataSet3.LoadFromFile(extractfilepath(application.exename)+'/TekMail.xml');
ClientDataSet3.Open;
Grid1.Clear;
Grid1.Cells[0,0] := '';
Grid1.Cells[1,0] := TreeView1.Selected.Text;
Grid1.Cells[2,0] := 'erhalten am:';
Grid1.Cells[3,0] := '';
Grid1.RowCount := 2;
i := 0;
while not ClientDataSet3.Eof do
begin
i := i+1;
Grid1.Cells[0,i] := '';
if ClientDataSet3.FieldByName('Name').AsString = '' then
Grid1.Cells[1,i] := ClientDataSet3.FieldByName('Email').AsString+'
'+'[b]'+ClientDataSet3.FieldByName('Subject').AsString+'[/b]'
else
Grid1.Cells[1,i] := ClientDataSet3.FieldByName('Name').AsString+'
'+'[b]'+ClientDataSet3.FieldByName('Subject').AsString+'[/b]';
Grid1.Cells[2,i] := ClientDataSet3.FieldByName('Date').AsString+'
[b]'+ClientDataSet3.FieldByName('Time').AsString+'[/b]';
Grid1.Cells[3,i] := ClientDataSet3.FieldByName('Id').AsString;
Grid1.AddRow;
ClientDataSet3.Next;
end;
ClientDataSet3.Close;
Grid1.RowCount := Form1.Grid1.RowCount-1;
Grid1.FixedRows := 1;
Grid1.SortByColumn(3);
except
ShowMessage(' Keine Datenbank gefunden, bitte importieren!');
end;
ClientDataSet2.Next;
end;
ClientDataSet2.Close;
except
ShowMessage(' Keine Datenbank gefunden, bitte importieren!');
end;
end;
end;