Einzelnen Beitrag anzeigen

norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#1

Outlook msg lesen / parsen

  Alt 22. Mär 2015, 22:37
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
Angehängte Dateien
Dateityp: zip MessageFiles.zip (7,3 KB, 26x aufgerufen)

Geändert von norwegen60 (22. Mär 2015 um 23:20 Uhr)
  Mit Zitat antworten Zitat