我面临着工作中的问题,如果我们有一个销售团队将他们的联系人存储在Outlook中并且不总是使用CRM,我们需要这些联系人来帮助分析销售。
现在尝试避免强迫销售团队使用CRM或手动导出他们的联系人我正在寻找一种可能的方式从程序设计中提取他们的联系人并创建一个CSV文件,可以通过电子邮件发送到总部然后使用Perl脚本添加到数据库。
我有关于如何做部分工作的想法,即我可以让程序作为定时任务运行,每天执行它并在程序中存储一个小的SQLLite DB文件,以确保只有新的联系人添加到CSVto每次都通过电子邮件发送。
我目前遇到的问题是我发现很难找到关于如何使用C#访问联系人的正确信息。我已经看到一些基于使用Microsoft.Office.Interlop.Outlook namespace的信息但不多于此。
如果有人能指出某个人尝试类似的地方,以便我可以看到它是如何完成的,然后创建我的自定义程序。
提前感谢您的任何帮助
答案 0 :(得分:3)
如果要访问Outlook数据(例如联系人),则必须向Microsoft Outlook X.X对象库添加COM引用。
之后,您可以创建Outlook应用程序对象的实例:
Microsoft.Office.Interop.Outlook.Application outlook;
outlook = new Microsoft.Office.Interop.Outlook.Application();
您可以通过以下方式获得联系人集合:
Microsoft.Office.Interop.Outlook.MAPIFolder folder =
outlook.GetNamespace("MAPI")
.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
IEnumerable<ContactItem> contacts = folder.Items.OfType<ContactItem>();
然后,您可以使用LINQ to Objects查询此集合:
var query = from contact in contacts
where contact.Email1Address != null
select contact;
Stefan Cruysbergs创建了一个OutlookProvider组件,它充当Outlook应用程序对象的包装器。您可以使用LINQ查询此提供程序并检索联系人等数据。
他在这里有完整的解释:
http://www.scip.be/index.php?Page=ArticlesNET05&Lang=NL
您可以在此处下载他的组件:
http://www.scip.be/index.php?Page=DownloadNETOfficeItems&Lang=NL
研究他的代码。它应该足以让你开始。