我发现此代码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;
}
}
答案 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;
}
}