【发布时间】:2015-06-17 12:39:06
【问题描述】:
我正在尝试使用 EWS 将外部联系人添加到全局地址列表。到目前为止,我还没有这样做。事件新添加的联系人在用户主要联系人列表中不可见。我在这里有什么遗漏吗?我试过两个版本。一个使用 EWS 的方法如下:
var service = InitConnection(exchangeUrl, exchangeUsername);
if (service == null)
{
return "Failed to connect to exchange server";
}
try
{
var data = (Hashtable)contactKeyValues;
if (data == null && data.Count <= 0)
{
return "The data can't be extracted. Please check your dictionary parameter of properties.";
}
var localExchangeContactObj = ValidateAndBuildContact(data);
var remoteExchangeContactObj = new Contact(service);
remoteExchangeContactObj.GivenName = localExchangeContactObj.FirstName;
remoteExchangeContactObj.Surname = localExchangeContactObj.LastName;
remoteExchangeContactObj.Initials = localExchangeContactObj.Initials;
remoteExchangeContactObj.FileAsMapping = FileAsMapping.GivenNameSpaceSurname;
remoteExchangeContactObj.PhoneNumbers[PhoneNumberKey.BusinessPhone] = localExchangeContactObj.PhoneBusiness;
remoteExchangeContactObj.PhoneNumbers[PhoneNumberKey.HomePhone] = localExchangeContactObj.PhoneHome;
remoteExchangeContactObj.EmailAddresses[EmailAddressKey.EmailAddress1] = localExchangeContactObj.Email;
var address = new PhysicalAddressEntry();
address.Street = localExchangeContactObj.Address;
address.City = localExchangeContactObj.City;
address.State = localExchangeContactObj.State;
address.PostalCode = localExchangeContactObj.Zip;
address.CountryOrRegion = localExchangeContactObj.Country;
remoteExchangeContactObj.PhysicalAddresses[PhysicalAddressKey.Business] = address;
remoteExchangeContactObj.Body = new MessageBody(BodyType.HTML, localExchangeContactObj.Notes);
remoteExchangeContactObj.Save(WellKnownFolderName.Contacts);
return remoteExchangeContactObj.Id.UniqueId.ToString();
}
catch (Exception exception)
{
return string.Format("Something went wrong while creating contact in exchnage. Here is the details {0}", exception.ToString());
}
另一种方法是通过 LDAP,在这种情况下,它会在当前 OU 中创建联系人,但在搜索时不显示。代码如下:
try
{
DirectoryEntry de;
if (string.IsNullOrEmpty(username) && string.IsNullOrEmpty(password))
{
de = new DirectoryEntry(ldapPath);
}
else
{
de = new DirectoryEntry(ldapPath, username, password);
}
var newContact = de.Children.Add("CN=" + name, "contact");
newContact.Properties["mail"].Value = email;
de.CommitChanges();
}
catch (COMException comEx)
{
var eventLog = new EventLog { Source = "Exchange Integration Create Contact" };
eventLog.WriteEntry(string.Format("Exception while creating contact {0} ", comEx), EventLogEntryType.Error);
return comEx.ErrorCode.ToString();
}
catch (Exception exception)
{
var eventLog = new EventLog { Source = "Exchange Integration Create Contact" };
eventLog.WriteEntry(string.Format("Exception while creating contact {0} ", exception), EventLogEntryType.Error);
return exception.ToString();
}
return "Contact created";
【问题讨论】:
-
你能展示一下你目前写的代码吗?
-
@Tholle 请查看更新的问题
-
看不到任何明显的错误,抱歉。也许是一个愚蠢的问题,但你试过吗? msdn.microsoft.com/en-us/library/office/…