Outlook Automation - Scaning Outlook's Folders (Views: 28)
Problem/Question/Abstract: How I can information from Outlook in my application Answer: Sample how to work with Outlook from Delphi application unit UScanOutlook; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, Outline; const olByValue = 1; olByReference = 4; olEmbeddedItem = 5; olOLE = 6; olMailItem = 0; olAppointmentItem = 1; olContactItem = 2; olTaskItem = 3; olJournalItem = 4; olNoteItem = 5; olPostItem = 6; olFolderDeletedItems = 3; olFolderOutbox = 4; olFolderSentMail = 5; olFolderInbox = 6; olFolderCalendar = 9; olFolderContacts = 10; olFolderJournal = 11; olFolderNotes = 12; olFolderTasks = 13; type TForm1 = class(TForm) oline_outlook: TOutline; Button8: TButton; procedure Button8Click(Sender: TObject); private { Private declarations } public { Public declarations } OlApp, NameSpace, root: OleVariant; end; var Form1: TForm1; implementation uses ComObj; {$R *.DFM} procedure TForm1.Button8Click(Sender: TObject); procedure scan(ol: TOutline; root: OleVariant; s: string); var i, j, k: integer; bcount, rcount: integer; branch, MAPIFolder: olevariant; line: string; begin line := ''; rcount := root.count; for i := 1 to rcount do begin line := s + root.item[i].name; ol.Lines.Add(line); branch := root.item[i].folders; bcount := branch.count; MAPIFolder := Namespace.GetFolderFromId(root.item[i].EntryID, root.item[i].StoreID); if MAPIFolder.Items.count > 0 then for j := 1 to MAPIFolder.Items.count do ol.Lines.Add(s + ' ' + MAPIFolder.Items[j].subject); if bcount > 0 then begin scan(ol, branch, s + ' '); end; end; end; begin oline_outlook.Lines.Clear; OlApp := CreateOleObject('Outlook.Application'); Namespace := OlApp.GetNameSpace('MAPI'); root := Namespace.folders; scan(oline_outlook, root, ''); end; end. |