我正在创建一个必须从 Microsoft Exchange 读取和更新联系人信息(如电话号码、电子邮件等)的应用程序......
有人知道我如何连接到 MS Exchange DB 吗?
我正在创建一个必须从 Microsoft Exchange 读取和更新联系人信息(如电话号码、电子邮件等)的应用程序......
有人知道我如何连接到 MS Exchange DB 吗?
WebDAV 是我使用的...
这是我为访问我们的交换服务器而编写的一个函数(请善待我几年前写的)..(:
/// <summary>
/// Returns XML string for a specific query
/// </summary>
/// <param name="Query"></param>
/// <param name="Account"></param>
/// <param name="Folder"></param>
/// <returns></returns>
private string ProcessRequest(string Query, string Account, string Folder) {
System.Net.WebRequest req = WebRequest.Create("http://" + MailServer + "/exchange/" + Account + "/" + Folder);
req.Headers.Add("Depth", "1");
req.Headers.Add("Brief", "t");
req.Credentials = ncCurrent;
Byte[] bytes = System.Text.Encoding.ASCII.GetBytes(Query);
req.ContentType = "text/xml";
req.ContentLength = bytes.Length;
req.Method = "SEARCH";
System.IO.Stream oStreamOut = req.GetRequestStream();
oStreamOut.Write(bytes, 0, bytes.Length);
oStreamOut.Close();
WebResponse rsp = req.GetResponse();
System.IO.Stream oStreamIn = rsp.GetResponseStream();
System.IO.StreamReader oStreamRead = new System.IO.StreamReader(oStreamIn);
return oStreamRead.ReadToEnd();
}
这就是我调用它的方式
string xmldata = "<?xml version= \"1.0\"?>" +
"<g:searchrequest xmlns:g=\"DAV:\">" +
"<g:sql> Select \"DAV:href\" , \"urn:schemas:httpmail:subject\" " +
"FROM Scope('SHALLOW TRAVERSAL OF \"/exchange/" + Account + "/" + Folder + "\"') " +
"</g:sql>" +
"</g:searchrequest>";
XmlDocument d = new XmlDocument();
d.LoadXml(ProcessRequest(xmldata, Account, Folder));
希望这会为您指明正确的方向
如果您使用的是 Exchange 2007,则可以使用Exchange Web 服务
你可以:
使用扩展 MAPI。在网上寻找 MAPI33。我认为它有你想做的例子。
使用网络服务。这是 2007 年的首选方式
WebDAV 也可以工作,但我认为它在 2007 年根本不工作?
MAPI 是最好的方法,但它在 .NET 中不受官方支持(它可以工作),并且它根本不能在 64 位模式下工作。它只有 32 位。
您将不得不使用扩展 MAPI,它不是标准的 SQL 数据库。
您可以使用 ExchangeManagmentShell 并发出诸如set-mailbox之类的powershell 命令来更改电子邮件地址。
但如果你只想更新电话号码、房间号码等。这些都存储在 ActiveDirectory 中。