Hallo zusammen,
ich kann mit angehängtem Code Outlook-Mails lesen. Ich habe aber zwei Probleme die ich nicht gelöst bekomme.
Mit
Delphi-Quellcode:
procedure TForm1.LoadHeaders(aStorage: IStorage);
var
Stream: IStream;
Statistics: STATSTG;
buff_8: pChar;
iSize,
dwfetch: Integer;
begin
aStorage.OpenStream('__substg1.0_007D001F', nil, STGM_READWRITE or
STGM_SHARE_EXCLUSIVE, 0, Stream);
if Stream = nil then
begin
mmoHeaders.Text := '';
mmoContent.Text := '[could not read message headers]';
end
else
begin
mmoContent.Text := '';
{ Informationen über Stream, u.A. Größe einlesen }
Stream.Stat(Statistics, STATFLAG_NONAME);
{ Buffer in passender Größe reservieren }
buff_8 := AllocMem(Statistics.cbSize);
iSize := Statistics.cbSize DIV 2;
{ Inhalt in buff einlesen }
Stream.Read(buff_8, Statistics.cbSize, @dwFetch);
{ Inhalt des Buffers als Result speichern }
mmoHeaders.Text := copy(String(buff_8), 1, iSize);
{ Speicher für Buffer wieder freigeben }
freeMem(buff_8);
end;
end;
lässt sich nur der Header von empfangenen Messages auslesen, aber nicht der von gesendeten. Ich habe noch festgestellt, dass z.B. das Sendedatum in einem Sub-Stream von '__properties_version1.0' enthalten ist. Diese werden aber nicht angezeigt.
Hat jemand einen Tip wie ich auch den Header von gesendeten Mails lesen kann?
Mit
Delphi-Quellcode:
function GetAnzAttachment(aStorage: IStorage; Slash: WideString):Integer;
var
EnumStatStg: IEnumStatStg;
StatStg: TStatStg;
SubStorage: IStorage;
begin
Result:=0;
aStorage.EnumElements(0, nil, 0, EnumStatStg);
while EnumStatStg.Next(1, StatStg, nil) = S_OK do
begin
case StatStg.dwType of
STGTY_STORAGE: begin
aStorage.OpenStorage(StatStg.pwcsName, nil, STGM_READWRITE or
STGM_SHARE_EXCLUSIVE, nil, 0, SubStorage);
if SubStorage <> nil then
begin
if (pos('ATTACH', Uppercase(StatStg.pwcsName)) >0) then
Result:=Result+1;
end;
end;
end;
end;
end;
ermittle ich die Anzahl der Anhänge. Leider werden hiermit aber auch z.B. Logos in der Fußzeile als Anhänge gezählt. Wie kann ich tatsächliche Anhänge von integrierten Grafiken unterscheiden?
Vielen Dank für eure Hilfe
Gerd