将Outlook联系人放入基于C#表单的应用程序
我已尝试将Outlook联系人的联系人设置为C#,但不起作用。我使用了Microsoft Outlook 12.0对象库。我想在richtextbox或gridview中显示数据 代码粘贴在下面。请让我知道我应该在那里做什么将Outlook联系人放入基于C#表单的应用程序,c#,outlook,C#,Outlook,我已尝试将Outlook联系人的联系人设置为C#,但不起作用。我使用了Microsoft Outlook 12.0对象库。我想在richtextbox或gridview中显示数据 代码粘贴在下面。请让我知道我应该在那里做什么 private void getContacts_Click(object sender, EventArgs e) { // Obtain an instance of the Outlook application Out
private void getContacts_Click(object sender, EventArgs e)
{
// Obtain an instance of the Outlook application
Outlook.Application app = new Outlook.ApplicationClass();
// Access the MAPI namespace
Outlook.NameSpace ns = app.GetNamespace("MAPI");
// Get the user's default contacts folder
Outlook.MAPIFolder contacts =
ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts);
// Iterate through each contact
for (int i = 1; i < contacts.Items.Count + 1; i++)
{
// Get a contact
Outlook.ContactItem contact =
(Outlook.ContactItem)contacts.Items[i];
richTextBox1.Text += contact.FullName + " (" +
contact.BusinessTelephoneNumber + ")" + Environment.NewLine;
Application.DoEvents();
}
}
}
private void getContacts\u单击(对象发送者,事件参数e)
{
//获取Outlook应用程序的实例
Outlook.Application app=新建Outlook.ApplicationClass();
//访问MAPI命名空间
Outlook.NameSpace ns=app.GetNamespace(“MAPI”);
//获取用户的默认联系人文件夹
Outlook.Mapi文件夹联系人=
ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts);
//遍历每个联系人
对于(int i=1;i
我尝试了下面提到的代码,在gridview
中从Outlook获取数据到C#桌面应用程序。我有上面提到的API,并获得了Outlook的电子邮件地址,该地址已在您的系统上配置!代码粘贴在下面
使用的API与outlook2007
和2003
配合良好,但对于outlook2010
,建议使用其他API
public partial class Form1: Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
fetchOutlookContacts();
}
public void fetchOutlookContacts()
{
Microsoft.Office.Interop.Outlook.Items OutlookItems;
Microsoft.Office.Interop.Outlook.Application outlookObj;
MAPIFolder Folder_Contacts;
outlookObj = new Microsoft.Office.Interop.Outlook.Application();
Folder_Contacts = (MAPIFolder)outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
OutlookItems = Folder_Contacts.Items;
DataTable dt = new DataTable();
dt.Columns.Add("Email Address");
for (int i = 0; i < OutlookItems.Count; i++)
{
Microsoft.Office.Interop.Outlook.ContactItem contact = (Microsoft.Office.Interop.Outlook.ContactItem)OutlookItems[i + 1];
dt.Rows.Add(new object[] { contact.Email1Address });
}
dataGridView1.DataSource = dt;
dataGridView1.Show();
}
}
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
fetchOutlookContacts();
}
public void fetchOutlookContacts()
{
Microsoft.Office.Interop.Outlook.Items OutlookItems;
Microsoft.Office.Interop.Outlook.Application outlookObj;
MAPIFolder\u联系人;
outlookObj=新的Microsoft.Office.Interop.Outlook.Application();
Folder_Contacts=(MAPIFolder)outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
OutlookItems=文件夹_Contacts.Items;
DataTable dt=新的DataTable();
dt.列。添加(“电子邮件地址”);
对于(int i=0;i
这对我很有用。它从outlook获取所有联系人,并在datagridview中显示
Microsoft.Office.Interop.Outlook.Items OutlookItems;
Microsoft.Office.Interop.Outlook.Application outlookObj = new Microsoft.Office.Interop.Outlook.Application();
MAPIFolder Folder_Contacts;
Folder_Contacts = (MAPIFolder)outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
OutlookItems = Folder_Contacts.Items;
MessageBox.Show("Wykryto kontaktów: " + OutlookItems.Count.ToString());
for (int i = 0; i < OutlookItems.Count; i++)
{
Microsoft.Office.Interop.Outlook.ContactItem contact = (Microsoft.Office.Interop.Outlook.ContactItem)OutlookItems[i+1];
sNazwa = contact.FullName;
sFirma = contact.CompanyName;
sAdress = contact.BusinessAddressStreet;
sMiejscowosc = contact.BusinessAddressPostalCode + " " + contact.BusinessAddressCity;
sEmail = contact.Email1Address;
dataGridView1.Rows.Add(sNazwa, sFirma, sAdress, sMiejscowosc, sEmail);
}
Microsoft.Office.Interop.Outlook.Items-OutlookItems;
Microsoft.Office.Interop.Outlook.Application outlookObj=新的Microsoft.Office.Interop.Outlook.Application();
MAPIFolder\u联系人;
Folder_Contacts=(MAPIFolder)outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
OutlookItems=文件夹_Contacts.Items;
Show(“Wykryto kontaktów:+OutlookItems.Count.ToString());
对于(int i=0;i
此代码在我的C#解决方案中运行良好
using Outlook =Microsoft.Office.Interop.Outlook;
private void kontaktImport_Click(object sender, RoutedEventArgs e)
{
Outlook.Application app = new Outlook.Application();
Outlook.NameSpace NameSpace = app.GetNamespace("MAPI");
Outlook.MAPIFolder ContactsFolder = NameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts);
Outlook.Items ContactItems = ContactsFolder.Items;
try
{
foreach (Outlook.ContactItem item in ContactItems)
{
String output = "";
output = item.FirstName + "\n";
output += item.LastName;
TestTextBox.Text = output;
}
}
catch (System.Runtime.InteropServices.COMException ex)
{
TestTextBox.Text = ex.ToString();
}
}
有一个Microsoft Interop解决方案,但它会给未安装Microsoft office的系统带来问题。所以我用Microsoft exchange服务解决了这个问题。现在我已经在Asp.NETMVC中试用过了,效果很好。这就是在Asp.Net中获取联系人的方法
public void GetContact()
{
string ewsUrl = "https://outlook.office365.com/EWS/Exchange.asmx";
string userName = "outlookusername";
string password = "outlookpassword";
ExchangeService servicex = new ExchangeService();
servicex.Url = new Uri(ewsUrl);
servicex.UseDefaultCredentials = true;
servicex.Credentials = new WebCredentials(userName, password);
ContactsFolder contactsfolder = ContactsFolder.Bind(servicex, WellKnownFolderName.Contacts);
int numItems = contactsfolder.TotalCount < 50 ? contactsfolder.TotalCount : 50;
if (numItems == 0)
AddContact();
numItems = contactsfolder.TotalCount < 50 ? contactsfolder.TotalCount : 50;
// Instantiate the item view with the number of items to retrieve from the Contacts folder.
ItemView view = new ItemView(numItems);
// To keep the request smaller, request only the display name property.
view.PropertySet = new PropertySet(BasePropertySet.IdOnly, ContactSchema.DisplayName);
// Retrieve the items in the Contacts folder that have the properties that you selected.
FindItemsResults<Item> contactItems = servicex.FindItems(WellKnownFolderName.Contacts, view);
// Display the list of contacts.
foreach (Item item in contactItems)
{
if (item is Contact)
{
Contact contact = item as Contact;
Console.WriteLine(contact.DisplayName);
}
}
}`
public void GetContact()
{
字符串ewsUrl=”https://outlook.office365.com/EWS/Exchange.asmx";
字符串userName=“outlookusername”;
字符串password=“outlookpassword”;
ExchangeService servicex=新的ExchangeService();
Url=新的Uri(ewsUrl);
servicex.UseDefaultCredentials=true;
servicex.Credentials=新的WebCredentials(用户名、密码);
ContactsFolder ContactsFolder=ContactsFolder.Bind(servicex,WellKnownFolderName.Contacts);
int numItems=contactsfolder.TotalCount<50?contactsfolder.TotalCount:50;
如果(numItems==0)
AddContact();
numItems=contactsfolder.TotalCount<50?contactsfolder.TotalCount:50;
//使用要从Contacts文件夹中检索的项目数实例化项目视图。
ItemView视图=新的ItemView(numItems);
//要使请求更小,请仅请求display name属性。
view.PropertySet=newpropertyset(BasePropertySet.IdOnly,ContactSchema.DisplayName);
//检索“联系人”文件夹中具有选定属性的项目。
FindItemsResults contactItems=servicex.FindItems(WellKnownFolderName.Contacts,视图);
//显示联系人列表。
foreach(联系人项目中的项目)
{
如果(项目为联系人)
{
联系人=作为联系人的项目;
Console.WriteLine(contact.DisplayName);
}
}
}`
您只需在此处替换outlook用户名和密码,这将为您提供联系人。
如果没有联系人,我会调用addcontact方法来添加联系人。更多参考信息,请参阅我找到的这篇文章
当按钮事件发生时,您能否提供有关“不工作”部件的更多详细信息!它一点作用也没有!虽然它应该显示t