karpanai
karpanai

Reputation: 235

How to get information about current user distribution list from outlook using WPF business app

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

Answers (2)

karpanai
karpanai

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

Eugene Astafiev
Eugene Astafiev

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

Related Questions