ExchangeService service = this.GetService();
FolderId folderID = GetPublicFolderID(service, "My Address Book");
ContactsFolder folder = ContactsFolder.Bind(service, folderID);
int folderCount = folder.TotalCount;
var guid = DefaultExtendedPropertySet.PublicStrings;
var epdCP = new ExtendedPropertyDefinition(guid, "CustomProp", MapiPropertyType.Boolean);
var epdAccount = new ExtendedPropertyDefinition(guid, "Account", MapiPropertyType.String);
var epdCID = new ExtendedPropertyDefinition(guid, "CustomerID", MapiPropertyType.Integer);
var view = new ItemView(folderCount);
view.PropertySet = new PropertySet(BasePropertySet.FirstClassProperties);
view.PropertySet.Add(epdCP);
view.PropertySet.Add(epdAccount);
view.PropertySet.Add(epdCID);
var contacts = service.FindItems(folderID, view);
foreach (Contact contact in contacts)
{
bool CP;
string Account;
int CID;
contact.GetLoadedPropertyDefinitions();
contact.TryGetProperty(epdCP, out CP);
contact.TryGetProperty(epdAccuont, out Account);
contact.TryGetProperty(epdCID, out CID);
Console.WriteLine(String.Format("{0, -20} - {1} - {2}"
, contact.DisplayName
, contact.EmailAddresses[EmailAddressKey.EmailAddress1]
, CP
, Account
, CID
));
}
目标是从公共通讯簿中获取联系信息,以便我可以将其与我们拥有的另一个程序同步。
对于公共通讯簿中的每个联系人,这将打印出 DisplayName、EmailAddress 和我的自定义属性。那里没有问题。
我遇到的问题是我似乎无法获得正确的咒语来拉动某些属性。CustomerID 和 Account 是我似乎无法提取/打印的两个示例。它们不是“自定义”,就像我没有创建它们一样。
如何通过 EWS 从联系人中获取 CustomerID 和 Account?