#!c:/perl/bin/perl.exe # #Read from Outlook # use strict; use Win32::OLE qw(in with); use Win32::OLE::Const 'Microsoft Outlook'; use Net::LDAP; use Encode; my ($entry,$i); my %fieldvalue; my $base = 'cn=Users, dc=myserver, dc=com'; my $ldap = Net::LDAP->new ('myserver.com') or die "$@"; my $mesg = $ldap-> bind ('Userid', password=> 'pwd', version=> 3); $|++; $Win32::OLE::Warn = 3; # Throw Errors, I'll catch them my $OL = Win32::OLE-> GetActiveObject('Outlook.Application') || Win32::OLE-> new('Outlook.Application', 'Quit'); my $NameSpace = $OL-> GetNameSpace("MAPI"); my $Contacts = $NameSpace-> GetDefaultFolder(olFolderContacts)->{Items}; #Folders("Personal Folders")-> Folders("Contacts")->{Items}; my $count = $Contacts -> Count; print "Anzahl: $count\n"; $i = 0; while ($i < $count) { $i++; $entry = $Contacts-> {$i}; $fieldvalue{'givenName'} = $entry-> {FirstName}; $fieldvalue{'sn'} = $entry-> {LastName}; $fieldvalue{'cn'} = $entry-> {FileAs}; $fieldvalue{'displayName'} = $entry-> {CompanyAndFullName}; $fieldvalue{'title'} = $entry-> {JobTitle}; $fieldvalue{'mail'} = $entry-> {Email1Address}; $fieldvalue{'wWWHomePage'} = $entry-> {WebPage}; $fieldvalue{'telephoneNumber'} = $entry-> {BusinessTelephoneNumber}; $fieldvalue{'homePhone'} = $entry-> {HomeTelephoneNumber}; $fieldvalue{'facsimileTelephoneNumber'} = $entry-> {BusinessFaxNumber}; $fieldvalue{'pager'} = $entry-> {PagerNumber}; $fieldvalue{'mobile'} = $entry-> {MobileTelephoneNumber}; $fieldvalue{'department'} = $entry-> {Department}; $fieldvalue{'company'} = $entry-> {CompanyName}; $fieldvalue{'streetAddress'} = $entry-> {BusinessAddressStreet}; $fieldvalue{'postOfficeBox'} = $entry-> {BusinessAddressPostOfficeBox}; $fieldvalue{'postalCode'} = $entry-> {BusinessAddressPostalCode}; $fieldvalue{'l'} = $entry-> {BusinessAddressCity}; $fieldvalue{'st'} = $entry-> {BusinessAddressState}; $fieldvalue{'co'} = $entry-> {BusinessAddressCountry}; $fieldvalue{'description'} = $entry-> {Body}; $fieldvalue{'info'} = 'Privat: ' . $entry-> {HomeAddress} if $entry-> {HomeAddress}; $fieldvalue{'telephoneNumber'} =~ s/[^\d,\+]//g; $fieldvalue{'telephoneNumber'} =~ s/^00/\+/; $fieldvalue{'telephoneNumber'} =~ s/^0/\+49/; $fieldvalue{'telephoneNumber'} =~ s/^([1-9])/\+4989$1/; $fieldvalue{'facsimileTelephoneNumber'} =~ s/[^\d,\+]//g; $fieldvalue{'facsimileTelephoneNumber'} =~ s/^00/\+/; $fieldvalue{'facsimileTelephoneNumber'} =~ s/^0/\+49/; $fieldvalue{'facsimileTelephoneNumber'} =~ s/^([1-9])/\+4989$1/; $fieldvalue{'mobile'} =~ s/[^\d,\+]//g; $fieldvalue{'mobile'} =~ s/^00/\+/; $fieldvalue{'mobile'} =~ s/^0/\+49/; $fieldvalue{'mobile'} =~ s/^([1-9])/\+4989$1/; $fieldvalue{'homePhone'} =~ s/[^\d,\+]//g; $fieldvalue{'homePhone'} =~ s/^00/\+/; $fieldvalue{'homePhone'} =~ s/^0/\+49/; $fieldvalue{'homePhone'} =~ s/^([1-9])/\+4989$1/; $fieldvalue{'objectClass'} = ['top', 'person', 'organizationalPerson', 'contact']; foreach my $key (keys %fieldvalue) {$fieldvalue{$key} = encode_utf8($fieldvalue{$key}); delete $fieldvalue{$key} unless ($fieldvalue{$key})} $fieldvalue{'cn'} =~ s/\,//g; my $ccn = "cn=$fieldvalue{'cn'}"; my $result = $ldap->add ("$ccn, $base ", attrs => [%fieldvalue] ); #Try Add delete $fieldvalue{'cn'}; delete $fieldvalue{'objectClass'}; my $result = $ldap->modify ("$ccn, $base", replace => { %fieldvalue } ); #Mod } $ldap->unbind;