Reputation: 235
In my WPF app, I need to enable/disable functionality based on the team. The team information is configured as outlook distribution list. Now I need retrieve this information from my App.
I googled and found the link http://msdn.microsoft.com/EN-US/library/office/ff184638(v=office.15).aspx
Unfortunately it doesn't compile as it is. After bit of research I can make it compile by changing it by changing it as
currentUser = new Outlook.Application().Session.CurrentUser.AddressEntry;
However, this works only when outlook is opened, but when outlook is closed it throws the exception. Any idea?
Upvotes: 2
Views: 1319
Reputation: 235
Finally I managed to crack it. Apparently we need to briefly start the outlook application, the solution is explained in the link https://groups.google.com/forum/#!msg/microsoft.public.outlook.program_vba/lLJwbwwl-XU/gRuQYRpJtxEJ
Hence I modified my code GetCurrentUserMembership() slightly to accomadate this change. Now it's working good. Tested in outlook 2007 and 2010.
The complete solution,
private List<string> GetCurrentUserMembership()
{
Outlook.Application outlook = new Outlook.Application();
Outlook.MailItem oMsg = (Outlook.MailItem)outlook.CreateItem(Outlook.OlItemType.olMailItem);
Outlook.Inspector oInspector = oMsg.GetInspector;
//session.Logon("", "", false, false);
var sb = new List<string>();
Outlook.AddressEntry currentUser = outlook.Session.CurrentUser.AddressEntry;
if (currentUser.Type != "EX") return sb;
var exchUser = currentUser.GetExchangeUser();
if (exchUser == null) return sb;
var addrEntries = exchUser.GetMemberOfList();
if (addrEntries == null) return sb;
foreach (Outlook.AddressEntry addrEntry in addrEntries)
{
sb.Add(addrEntry.Name);
}
return sb;
}
Upvotes: 2
Reputation: 49395
Could you please be more specific? What exception (error message and error code) do you get in the code?
I'd recommend starting from breaking the chain of calls and declare each property or method call on a separate line. Thus, you will find a problematic property or method call which fires an exception.
Most probably you need to call the Logon method of the Namespace class. As an example, you may find the C# app automates Outlook (CSAutomateOutlook) sample project helpful.
Upvotes: 0