AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi IdMessage.SaveToFile Funktioniert nicht!???
Thema durchsuchen
Ansicht
Themen-Optionen

IdMessage.SaveToFile Funktioniert nicht!???

Ein Thema von NBG · begonnen am 5. Nov 2003 · letzter Beitrag vom 3. Mai 2006
 
NBG

Registriert seit: 21. Okt 2003
Ort: HH
19 Beiträge
 
#1

IdMessage.SaveToFile Funktioniert nicht!???

  Alt 5. Nov 2003, 08:56
Habe nen POP3 Client geschrieben.

Immer wenn ich versuche ne E-Mail zu speichern über die SaveToFile methode von TIdMessage
dann wird folgende Exception beim durchtracen aufgerufen: Externel Exception C000001E.
beim komplett durchlaufen gibt's ne andere Fehlermeldung: Format '%p' ungültig oder nicht kompatiebel mit argument.

Das witzige ist, das die Mail gespeichert ist! jedoch fehlerhaft! wenn ich die mail wider lade,
ist dort zb. garkeine Massagepart einteilung mehr vorhannden. d.h. ich bekomme alle Parts im ersten Part siehe unten:

--_NextPart_2altrfkindysadvnqw3nerasdf
Content-Type: text/plain; charset"iso-8859-1"
Content-Transfer-Encoding: quoted-printable

...

--_NextPart_2altrfkindysadvnqw3nerasdf
Content-Type: text/html; charset"iso-8859-1"
Content-Transfer-Encoding: quoted-printable

...

ich habe mal die SaveToFile Methode getraced, dabei ist mir aufgefallen, das die Mail in einem
filestream geschrieben wird. Beim Free des Filestreams gibts dann ne Exception.
Ich denke aber das es vorher auch schon ne exception gab, die abgefangen wurde. kein plan?
gibt es ne möglichkein abgefangene Exceptions anzuzeigen?

Hier mal mein Soure vieleicht fällt jemanden was auf:

Delphi-Quellcode:
procedure TfrmEmailempfang.BtnOKClick(Sender: TObject);
var
  i : Integer;
  Filename : String;
  EMail: TEmail;

  function lfd(path : String) : Integer;
  begin
    Result := 0;
    while FileExists(path + '\' +FormatFloat('00000000', Result) + '.eml') do inc(Result);
  end;

begin
  Filename := MailPath + User;
  ForceDirectories(Filename);
  for i := 1 to StrGridEMails.RowCount-1 do
    if (Integer(StrGridEMails.Objects[0, i]) = 3) or
       (Integer(StrGridEMails.Objects[0, i]) = 2) then Inc(MailSum);
  for i := 1 to StrGridEMails.RowCount-1 do
  begin
    if (Integer(StrGridEMails.Objects[0, i]) = 3) or
       (Integer(StrGridEMails.Objects[0, i]) = 2) then begin
      IdMessage.Clear;
      POP3.Retrieve(StrGridEMails.RowCount-i-1, IdMessage);
      Filename := MailPath + User + '\' + FormatFloat('00000000', lfd(FileName)) + '.eml';
        IdMessage.SaveToFile(Filename);
    end;
    if (Integer(StrGridEMails.Objects[0, i]) = 4) or
       (Integer(StrGridEMails.Objects[0, i]) = 2) then
      POP3.Delete(StrGridEMails.RowCount - i);
  end;
  Close;
end;
Ich benutze übrigens die neuste Indy version 9.0.14
Vielen dank für Hilfen! Greatzzz...
  Mit Zitat antworten Zitat
 


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 20: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