http://qs321.pair.com?node_id=161447


in reply to Accessing properties from Outlook Addressbook

Give this a try -- it works for me.
#!/usr/bin/perl use strict; use warnings; use Win32::OLE; use Win32::OLE::Const 'Microsoft Outlook'; #what properties do we want to get from Outlook? my @properties = ( "Fullname", "PrimaryTelephoneNumber", "BusinessTelephoneNumber", "Business2TelephoneNumber", "BusinessFaxNumber", "HomeTelephoneNumber", "Home2TelephoneNumber", "MobileTelephoneNumber", "OtherFaxNumber", "OtherTelephoneNumber", "Email1Address", "Email1AddressType", "Email2Address", "Email2AddressType" ); #get an Outlook object my $outlook = Win32::OLE->new('Outlook.Application'); unless ($outlook) { my $error = Win32::OLE->LastError(); die "Couldn't start Outlook: $error"; } #get the Contacts folder my $namespace = $outlook->GetNamespace("MAPI"); my $folder = $namespace->GetDefaultFolder(olFolderContacts); my $items = $folder->Items; print "Folder: ", $folder->Name,"\n"; print "Total entries: ",$items->Count,"\n"; #print out the header print join(",",@properties),"\n"; #loop through the items, printing out each one foreach my $index (1..$items->Count) { my $contact = $items->item($index); my @entry; push @entry, $contact->{$_} foreach (@properties); print join(",",@entry),"\n"; };
Note that the VB documentation is the best you'll get in most cases. Once you learn how Win32::OLE works though, you can usually reference the VB docs to figure out the object model then guess at what is needed to make it work with perl and Win32::OLE.

Replies are listed 'Best First'.
Re^2: Accessing properties from Outlook Addressbook
by Anonymous Monk on Jan 27, 2011 at 07:41 UTC
    What a good example! Thanks a lot -Percy