{So how to read a collection of Contacts which are exist in MS Outlook?
This task is very popular. For example, you want to develop a sample tool
which will notify you about birthday for someone or you want to send
messages to "mailing list". So you want to naviagte thru list of defined
contacts and process any item.}
uses ComObj;
procedure TForm1.Button1Click(Sender: TObject); const olFolderContacts = $0000000A; var outlook, NameSpace, Contacts, Contact: OleVariant;
i: Integer; begin outlook := CreateOleObject('Outlook.Application');
NameSpace := outlook.GetNameSpace('MAPI');
Contacts := NameSpace.GetDefaultFolder(olFolderContacts); for i := 1 to Contacts.Items.Count do
begin Contact := Contacts.Items.Item(i); {now you can read any property of contact. For example, full name and
email address} ShowMessage(Contact.FullName + ' <' + Contact.Email1Address + '>'); end;
Outlook := UnAssigned; end;
{if you need a birthday, you can retrieve it as DateToStr(Contact.Birthday)
Any contact item have a lot of properties. See a list (alphabet):