AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Attachment löschen

Ein Thema von rokli · begonnen am 15. Feb 2017 · letzter Beitrag vom 16. Feb 2017
 
Slipstream
(Gast)

n/a Beiträge
 
#6

AW: Attachment löschen

  Alt 15. Feb 2017, 18:24
Delphi-Quellcode:
  for I := Anhang.MessageParts.Count downto 1 do
  begin
    p_ProtoWrite('Attach Name ' + IntToStr(i) + ': ' + Anhang.MessageParts.Items[i].FileName); // nur Info in einer Protokolldatei
    Anhang.MessageParts.Items[i].Free;
    p_ProtoWrite('geFreeT: ' + InttoStr(i)); // nur Info in einer Protokolldatei
    end;
Vielleicht kann mir jemand von Euch aus dem Wald helfen?
Komme nicht aus dem Wald, aber mir fällt ein: du hast ja immer nur zwei Anhänge, einen mit Index 0 und einen mit Index 1. Dann belege doch, wenn dir das Free und das Create zu langsam sind, diese beiden Items immer wieder einfach neu in der Schleife. Vorher musst du natürlich die beiden Items 0 und 1 erzeugen mit Add:

Delphi-Quellcode:
Anhang.MessageParts.Items[0].FileName := 'C:\Stuff\MyPdf.pdf';
Anhang.MessageParts.Items[1].FileName := 'C:\Stuff\MyExcelsheet.xls';
Wir haben eine Anwendung für unser Office, um Updates bei Kunden anzmelden. Dort wird manchmal bei kleinen Umfang eine zip-Datei mitverschickt. Bis jetzt haben wir dieses Problem nicht gefunden. Wir machen das aber auch ein bisschen anders innerhalb der Schleife:
Delphi-Quellcode:
Function TFormSend.SendMail: Boolean;
Var
  MList : TStrings;
begin
  MList := TStringList.Create;
  Try
    MList.Text := DM.Qset_Mailtext.FieldByName('Containment').AsString;
    Try
      IndyMess.Recipients.EMailAddresses := E_Customer;
      IndyMess.From.Text := E_User;
      IndyMess.Sender.Text := E_Sender;
      IndyMess.Subject := E_Topic;
      IndyMess.Body := MList;

      IndyMess.MessageParts.Clear;
      If FileExists(E_Filename) Then
      Begin
        If E_Filename <> 'Then
        Begin
          IndyMess.MessageParts.Add();
          TIdAttachmentFile.Create(IndyMess.MessageParts,E_Filename);
        End;
      End;

      IndySMTP.Connect;
      IndySMTP.Send(IndyMess);
      IndySMTP.Disconnect;

      Result := True;
    Except
      On e:exception Do
      Begin
        GLD.ErrorMessage := 'Error while sending mail (' + E_Topic + '): ' + e.Message;
        Result := False;
      End;
    End;
  Finally
    MList.Free;
  End;
end;
Ob dir das jetzt weiterhilft, weiss ich nicht. Eine dritte Möglichkeit wäre, die beiden Attachementfiles jedes mal vorher zu löschen mit Delete:

Delphi-Quellcode:
Anhang.MessageParts.Delete(0);
Anhang.MessageParts.Delete(1);
Danach sollten da auch keine Items mehr existieren und du kannst dann im ncähsten Schleifendurchlauf mit Add wieder neue machen.

Geändert von Slipstream (16. Feb 2017 um 04:45 Uhr) Grund: Fehler in Code korrigiert
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz