Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Outlook auslesen (https://www.delphipraxis.net/96307-outlook-auslesen.html)

simlei 22. Jul 2007 02:19


Outlook auslesen
 
Hallo!
Ich bin auf der Suche nach einer Möglichkeit, wie ich die Ordnerstruktur der Emails samt Emails aus Outlook in mein Programm auslesen kann... Das Tutorial schien schon mal ein guter Ansatz zu sein: http://www.dsdt.info/tipps/?id=608

Ich habe auch schon einen funktionierenden Code, mit dem Outlook gestartet wird und ab dann an kann von meinem Programm darauf zugegriffen werden, zB hat das Versenden einer Mail wie im Tutorial beschrieben, schon funktioniert...

Code:
Code:
var
  Form1: TForm1;
  Outlook: _Application; // OutlookApplication; for D5 users
  NmSpace: NameSpace;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Unknown: IUnknown;
  Result: HResult;
  Folder: MAPIFolder;
begin
  {$IFDEF VER120}      // Delphi 4
  Outlook := CoApplication_.Create;
  {$ELSE}              // Delphi 5
  Outlook := CoOutlookApplication.Create;
  {$ENDIF}

  NmSpace := Outlook.GetNamespace('MAPI');
  NmSpace.Logon('', '', False, False);
  Folder := NmSpace.GetDefaultFolder(olFolderInbox);
  Folder.Display;
end;
Leider steht im Tutorial an keiner Stelle, wie man in der Ordnerstruktur vonOutlook wechselt und die Mails auslesen kann (zB dass die ordner in einer Baumstruktur angeordnet sind und jeweils ein Array von MailItems haben? stand eben nicht dort und gefunden habe ich darüber auch sonst nichts...). Auf jedenfall brauche ich jetzt einen Weg das auszulesen, es wäre toll, wenn das jemand ein wenig mehr aufschlüsselt (gibts vielleicht ne quelle mit mehr Informationen?) oder vielleicht schon Code/Knowhow zur Verfügung hat? Danke schonmal!

mkinzler 22. Jul 2007 10:04

Re: Outlook auslesen
 
Hier wählst du doch den Ordner aus:
Delphi-Quellcode:
Folder := NmSpace.GetDefaultFolder(olFolderInbox);
in Folder.Items befinden sich die Nachrichten des Ordners

simlei 22. Jul 2007 11:36

Re: Outlook auslesen
 
gut; und wie wechsle ich in bestimmte Ordner? Es gibt ja die Möglichkeit, eigene zu erstellen... Deshalb muss das doch über eine Zeichenkettenangabe gehen, es kann ja schlecht eine feststehende Variable sein wie hier bei Inbox...
Und dann wäre auch wichtig: eine Möglichkeit, die Ordnerliste überhaupt erst zu bekommen...

Wenn es eine Dokumentation dazu gibt, her damit, gefunden hatte ich keine... oder wenn diese zwei noch ausstehenden Sachen bekannt sind, her damit :D

mkinzler 22. Jul 2007 11:47

Re: Outlook auslesen
 
Schau dir mal die VBA-Hilfe von Outlook an.

simlei 22. Jul 2007 20:24

Re: Outlook auslesen
 
Zitat:

Zitat von mkinzler
Hier wählst du doch den Ordner aus:
Delphi-Quellcode:
Folder := NmSpace.GetDefaultFolder(olFolderInbox);

Ja; meine Frage ist nun u.a. wie kann ich in einen anderen Folder als "Inbox" wechseln? (zB habe ich in "Inbox" einen Ordner namens "Test1" angelegt und möchte nun diesen Ordner als "Folder" haben)

mkinzler 22. Jul 2007 20:34

Re: Outlook auslesen
 
Die Unterordner befinde sich unter Folder.Folders

simlei 22. Jul 2007 20:58

Re: Outlook auslesen
 
ausprobieren kann ich es erst später, aber das hört sich gut an :)
danke!

simlei 23. Jul 2007 20:34

Re: Outlook auslesen
 
So; es hat gut geklappt, über die Eigenschaft "Folders" in die Unterordner zu wechseln. Problem: Folder.Parent ist vom Typ IDispatch, und damit geht Folder := Folder.Parent nicht; so wollte ich eigentlich eine Ebene aufwärts gehen...

Außerdem ist Folder.Items.Item(i), welches höchstwahrscheinlich ein Mail-Item des Folders darstellen soll, vom Typ IDispatch und hat keine sinnvollen Eigenschaften für ein Maailitem wie z. B. "Body" "Subject" "from" "CC" usw...

Drittes Problem: Mit "Folder := NmSpace.GetDefaultFolder(olFolderInbox);" kann ich in "Inbox" wechseln, und mit anderen Konstanten auch in "Deleted Items", "Outbox" und "Sent Mails", jedoch nicht (und das ist mir wichtig) in den Überordner, da auch selbst erstellte Ordner in der selben Ebene wie Inbox, usw existieren könne. Vielleicht funktioniert das, wenn ich aus einem Ordner in seinen übergeordneten Ordner wechseln kann (s.o.)...

Wenn diese Probleme gelöst werden können bin ich glücklich ;)
simlei


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:36 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