我正在努力寻找一种方法来做到这一点,到目前为止没有运气。我们应该使用EWS连接到一个帐户,读取可能包含在那里的所有联系人,并将该数据插入自定义数据库中。很容易,我很快就把它运行起来没有问题。
现在,一旦我们不得不将其投入生产,这就出乎意料了。客户拒绝向我们提供将存储联系人的帐户的凭据。他们说他们只会让我们使用其他帐户,并与该帐户共享联系人。现在,我没有问题连接到EWS并获得我所连接的帐户的联系人,但我认为当他们不属于该帐户时,无法获取联系人,但是对于正在共享它们的另一个人。好吧,我知道我们可以实施一些违规行为,但我担心这也不是一个选择...
答案 0 :(得分:0)
当您与其他邮箱共享联系人时,这些联系人将存储在WellKnownFolderName.Contacts
内的联系人文件夹中。在您可以访问此文件夹中的联系人之前,您需要获取FolderId
。如果您知道共享联系人文件夹的名称,则可以使用此类文件来查找正确的文件夹。
Folder rootFolder = Folder.Bind(service, WellKnownFolderName.Contacts);
foreach (Folder folder in rootFolder.FindFolders(new FolderView(100)))
{
if (folder.DisplayName==DisplayName)
{
// Put your code here to get the FolderId and store it if necessary
}
}
现在您拥有共享文件夹的ID,您应该能够使用您的代码来收集联系信息。我能够使用Exchange Online使用几个邮箱。
我希望这会有所帮助。如果这确实解决了您的问题,请将此帖标记为已回答。
谢谢,
---鲍勃---