Writable Contact Lists With Outlook and LDAP?
Snafoo asks: "Ximian Evolution allows users to set up LDAP-based shared contact lists, to which multiple users can read and write. However, my company uses MS Outlook 2002, which doesn't support writing to LDAP directories. Currently, we use a kludgy PHP front-end to the LDAP directory for entering new addresses. Short of buying Exchange, is there anything we can do to share write-enabled contact lists with LDAP and Outlook?"
why not change to evolution? It looks exactly like outlook, and if you don't use excange features anyway, then why not simply use the product that meets your demands instead of one that is made by microsoft?
I'm not trolling. I'm serious. Why do people choose to use MS products when there are alternatives out there, that will meet their demands?
I usually try to use the best tool for the job - not the "I have a hammer, therefore all my problems are a nail" solution.
Yeah, I admit that this is somewhat of a flamebait, (but so was the original /. question) but that's the problem with closed source and a abusive monopoly. If MS had been forced to open all API's and file formats like some of us were hoping, you wouldn't be having this problem.
For some strange reason, people think that Outlook is a stand-alone product. This is somewhat true, but you (like the poster found out) lose most of the compelling features if you fail to use Exchange. Look mom! I have a shirt with no pants!
Some people will probably point out that you may be able to use OpenMail or Insight Server (Insight Connector?), but these are also expensive products that don't fully integrate with Outlook either. If you are going to go high-end commercial, you might as well go with exchange (but put the damn thing behind a firewall / UNIX mail relay server fer christs sakes.)
Of course typing "shared outlook contact lists" in google comes up with a page with lots of info on the subject, but I didn't see anything that exactly matched the poster's requirements. Lot's of kludgy stuff, mostly commercial, all trying to make the closed source pile of crap a little more usable.
As for memory leaks, I'm not sure about that. You do need to cleanup after Outlook and Redemption very well though. When I first started using it in .Net, I was sloppy because I was used to the CLR cleaning up objects after they go out of scope. If you don't clean up well, you can end up with a background OUTLOOK.EXE process running. Make sure to create an instance of the MAPIUtils object and execute the Cleanup() method, and of course set everything to null.
Performance doesn't seem to be much worse than accessing the Outlook object model directly. I did run across very poor performance accessing a list of Contacts, I was iterating through the Items property of a MAPIFolder. Dmitry (author of Outlook Redemption) gave me some help to access them a different way and it was MUCH faster. If I remember correctly I was trying to get about 200 Contacts and it was taking a minute or 2. The method he showed me ended up taking a few seconds. What you end up doing is creating a MAPITable and setting its Item property to the Items property of a folder. Apparently accessing the MAPITable is much faster than going through the Folder.
Something else I ran up against when creating an addin for Outlook in C# was that when Visual Studio .Net generates the Outlook interop dll, it sets all the events to private. So, in order to respond to any events in Outlook, you have to use ildasm.exe to disassemble the assembly and manually go through and mark them public, then use ilasm.exe to regenerate the binary. Kind of a pain in the ass, but once you do it, you don't have to do it again. Unless VS.Net regenerates the Interop assembly for you again ;)
Now, I'll admit that .Net-->COM-->Extended MAPI isn't the most elegant solution to the problem. If I were a C++ developer I would have written my own Extended MAPI access classes and made them accessible in a native .Net assembly. However, it has been a lifesaver for the project I am working on. It would be really nice if Microsoft made a way to have trusted components that can access Outlook directly. I have heard something about this maybe in Outlook 2003, but haven't read anything defining how it is done, or if it can be done.