Mega Code Archive

 
Categories / Delphi / Activex OLE
 

Outlook Automation Scaning Outlooks Folders

Title: Outlook Automation - Scaning Outlook's Folders Question: 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.count0 then for j:=1 to MAPIFolder.Items.count do ol.Lines.Add(s+' '+MAPIFolder.Items[j].subject); if bcount0 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.