ich lese mit den Indy-Komponenten unter Lazarus 2.2.4 aus einer .EML-Datei alle Attachments und möchte diese als einzelne Dateien im FileSystem ablegen.
Das funktioniert mit folgendem Code hervorragend:
Code: Alles auswählen
uses
Classes, SysUtils,
IdMessage, IdAttachment, IdAttachmentFile;
procedure ExtractAttachments(const MailFile, TargetDir: string);
var
Msg: TIdMessage;
i: Integer;
Att: TIdAttachmentFile;
OutFile: string;
begin
Msg := TIdMessage.Create(nil);
try
Msg.LoadFromFile(MailFile);
ForceDirectories(TargetDir);
for i := 0 to Msg.MessageParts.Count - 1 do
begin
if Msg.MessageParts.Items[i] is TIdAttachmentFile then
begin
Att := TIdAttachmentFile(Msg.MessageParts.Items[i]);
OutFile := IncludeTrailingPathDelimiter(TargetDir) +
Att.FileName;
Att.SaveToFile(OutFile);
WriteLn('Gespeichert: ', OutFile);
end;
end;
finally
Msg.Free;
end;
end;
Code: Alles auswählen
begin
ExtractAttachments(
'C:\Temp\Test.mail',
'C:\Temp\Attachments'
);
end;
Code: Alles auswählen
Att.SaveToFile(OutFile);Frage: Was ist zu tun, dass im FileSystem die Umlaute richtig dargestellt werden?
Viele Grüße aus Nürnberg
Fritz