iAttachment wird viermal was per TIdAttachmentFile.Create zugewiesen, aber das iAttachment.Free gibt es nur einmal. Das Ergebnis welcher Zuweisung wird denn hier freigegeben und was passiert mit den verbleibenden dreien?
Und da iAttachment außer bei der Zuweisung nicht verwendet wird, könnte man dann nicht direkt ganz darauf verzichten?
Wenn von vier iAttachment drei nicht freigegeben werden, kann man auf die vierte Freigabe auch verzichten
Ansonsten würd' ich mir mal IdMessage1.MessageParts anschauen.
Das gibt es sowas wie IDMessage.MessageParts.Count. Damit dürftest Du erfahren, wieviele Anhänge an der Mail schon vorhanden sind.
Tippe mal darauf, dass Du dort nach dem Mailversand ein bisserl aufräumen musst und nicht erwarten kannst, dass die Aufräumarbeiten automatisch nach vom Send oder vom Disconncet ausgeführt werden.
Wäre auch nicht wirklich sinnvoll, wenn man viele Mails (z. B. in 'ner Schleife) mit den gleichen Anhängen an viele unterschiedliche Empfänger schicken möchte.
Und:
Nimm doch bitte im Eingangspost mal den Nutzernamen und das Passwort raus, sonst kommt noch wer auf die Idee und verschickt in Deinem Namen über Deine Firmenemail irgendwelchen Spam. Würd' mich als Chef dann eher nicht erfreuen