AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi EMails auslesen mit Simple MAPI
Thema durchsuchen
Ansicht
Themen-Optionen

EMails auslesen mit Simple MAPI

Ein Thema von Katrin · begonnen am 16. Sep 2009 · letzter Beitrag vom 5. Okt 2009
 
Katrin

Registriert seit: 19. Jan 2007
Ort: Arnsberg
5 Beiträge
 
#12

Re: EMails auslesen mit Simple MAPI

  Alt 5. Okt 2009, 09:34
Hallo zusammen,

ich habe das Problem jetzt gelöst, weiß aber nicht, warum es so funktioniert und nicht anders.

Als erstes habe ich alle Variablen, die ich für Mapi-Aufrufe brauchte, global definiert.
Danach bekam ich aber wieder den gleichen Fehler wie am Anfang (Variable Session wurde überschrieben).
Wenn ich aber die Session lokal und alle anderen Variablen global definiere, funktioniert es.

Wenn mir das noch jemand erklären könnte ...

Hier ist der funktionierende Quelltext:

Delphi-Quellcode:
var MessID: AnsiChar;
    pMsg: PMapiMessage;
    Err: Cardinal;

procedure TForm1.Button1Click(Sender: TObject);
var i: Integer;
    Session: LHANDLE;
begin
  Err := MapiLogOn(Handle, '', '', MAPI_EXPLICIT_PROFILE, 0, @Session);
  if Err <> SUCCESS_SUCCESS
  then begin
    ShowMessage('Verbindung konnte nicht hergestellt werden! ' + IntToStr(Err));
    Exit;
  end;
  i := 1;
  Err := MapiFindNext(Session, Handle, '', '', MAPI_UNREAD_ONLY, 0, @MessID);
  while Err = SUCCESS_SUCCESS do
  begin
    Err := MapiReadMail(Session, 0, @MessID, MAPI_PEEK, 0, pMsg);
    if Err = SUCCESS_SUCCESS
    then begin
      StringGrid1.Cells[0,i] := MessID;
      StringGrid1.Cells[1,i] := pMsg^.lpOriginator^.lpszName + ' (' + pMsg^.lpOriginator^.lpszAddress + ')';
      StringGrid1.Cells[2,i] := pMsg^.lpszSubject;
      StringGrid1.Cells[3,i] := pMsg^.lpszDateReceived;
      Inc(i);
      Application.ProcessMessages;
    end;

    Err := MapiFindNext(Session, 0, nil, @MessID, MAPI_UNREAD_ONLY, 0, @MessID);
  end;

  MapiFreeBuffer(pMsg);

  MapiLogOff(Session, 0, MAPI_LOGOFF_SHARED, 0);

  StringGrid1.RowCount := Max(i, 2);
end;
Viele Grüße und Danke für Eure Hilfe
Katrin
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz