Moin Gerd,
vielleicht gibt es eine Kennung, aber die hab ich auch noch nicht gefunden
Ich wandel den IStream in einen TStringStream um, ist vielleicht etwas einfacher zu handeln.
Bei dem E-Mailtext solltest du die Nullzeichen nicht unbedingt gegen Leerzeichen ersetzen ^^
Delphi-Quellcode:
function PDropTarget.GetAttachmentFilename(_AttachmentStorage: IStorage): String;
var
l_AttachmentStream: IStream;
l_AttachmentStat: TStatStg;
l_OleStream: TOleStream;
l_StringStream: TStringStream;
l_FileName: String;
p : PChar;
i : integer;
begin
//CONST_AttachmentFileName = '__substg1.0_3001001F'
_AttachmentStorage.OpenStream(CON_AttachmentFileName, nil, STGM_READWRITE or STGM_SHARE_EXCLUSIVE, 0, l_AttachmentStream);
if (l_AttachmentStream.Stat(l_AttachmentStat, STATFLAG_NONAME) = S_OK) then
begin
try
l_OleStream := TOleStream.Create(ISTREAM(l_AttachmentStream));
l_StringStream := TStringStream.Create('');
l_StringStream.CopyFrom(l_OleStream, 0);
l_FileName := l_StringStream.DataString;
UniqueString(l_FileName);
p := PChar(l_FileName);
for i := 1 to length(l_FileName) do
begin
if p^ = #0 then
p^ := #32;
Inc(p);
end;
result := StringReplace(l_FileName, #32, '', [rfReplaceAll]);
finally
l_OleStream.Free;
l_AttachmentStream := NIL;
end;
end;
end;
Mit dem Datum von gesendeten Mails kann ich dir zur Zeit leider nicht weiter helfen.
Gruß
David