使用WinForm以编程方式在Outlook中搜索特定联系人

时间:2017-01-06 19:58:19

标签: c# winforms outlook

我发现此代码here使用C#winform搜索Outlook联系人。我很难理解为什么代码不能正常工作。 VS2015告诉我"' Myapp'不包含'应用程序'的定义没有扩展方法'应用程序'接受第一个类型' Myapp'可以找到(你错过了使用指令或汇编引用吗?)"

以下是代码:

 private void FindContactEmailByName(string firstName, string lastName)
    {
        Outlook.NameSpace outlookNameSpace = this.Application.GetNamespace("MAPI"); //VS does not like this line, particularly "Application"
        Outlook.MAPIFolder contactsFolder =
            outlookNameSpace.GetDefaultFolder(
            Microsoft.Office.Interop.Outlook.
            OlDefaultFolders.olFolderContacts);
        Outlook.Items contactItems = contactsFolder.Items;
        try
        {
            Outlook.ContactItem contact =
                (Outlook.ContactItem)contactItems.
                Find(String.Format("[FirstName]='{0}' and "
                + "[LastName]='{1}'", firstName, lastName));
            if (contact != null)
            {
                contact.Display(true);
            }
            else
            {
                MessageBox.Show("The contact information was not found.");
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

1 个答案:

答案 0 :(得分:1)

Outlook.NameSpace outlookNameSpace = this.Application.GetNamespace("MAPI");行给我发了同样的信息。
我修复了你的代码并进行了测试。

请注意前两行中outlook对象的声明。
也 为了设置联系人文件夹,我已将其从原始代码更改为outlook.GetNamespace("MAPI").GetDefaultFolder(MyOutlook.OlDefaultFolders.olFolderContacts);

using MyOutlook= Microsoft.Office.Interop.Outlook;

  private void FindContactEmailByName(string firstName, string lastName)
        {
            Microsoft.Office.Interop.Outlook.Application outlook;
            outlook = new Microsoft.Office.Interop.Outlook.Application();

           MyOutlook.MAPIFolder contactsFolder =
           outlook.GetNamespace("MAPI").GetDefaultFolder(MyOutlook.OlDefaultFolders.olFolderContacts);
           MyOutlook.Items contactItems = contactsFolder.Items;
            try
            {
                MyOutlook.ContactItem contact =
                    (MyOutlook.ContactItem)contactItems.
                    Find(String.Format("[FirstName]='{0}' and "
                    + "[LastName]='{1}'", firstName, lastName));
                if (contact != null)
                {
                    contact.Display(true);
                }
                else
                {
                    MessageBox.Show("The contact information was not found.");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }