【发布时间】:2009-02-10 15:58:49
【问题描述】:
我正在创建一个应用程序,该应用程序必须从 Microsoft Exchange 读取和更新联系人信息(如电话号码、电子邮件等)...
有人知道如何连接到 MS Exchange DB 吗??
【问题讨论】:
标签: c# database visual-studio exchange-server
我正在创建一个应用程序,该应用程序必须从 Microsoft Exchange 读取和更新联系人信息(如电话号码、电子邮件等)...
有人知道如何连接到 MS Exchange DB 吗??
【问题讨论】:
标签: c# database visual-studio exchange-server
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));
希望这会为您指明正确的方向
【讨论】:
您必须使用扩展 MAPI,它不是标准的 SQL 数据库。
【讨论】:
如果您使用的是 Exchange 2007,则可以使用 Exchange Web Services
【讨论】:
你可以:
使用扩展 MAPI。在网上寻找 MAPI33。它有你想做什么的例子。
使用网络服务。这是 2007 年的首选方式
WebDAV 也可以,但我认为它在 2007 年根本行不通?
MAPI 是最好的方法,但它在 .NET 中不受官方支持(它可以工作),而且它在 64 位模式下根本不工作。它只有 32 位。
【讨论】:
您可以使用 ExchangeManagmentShell 并发出类似 set-mailbox 之类的 powershell 命令来更改电子邮件地址。
但如果你只想更新电话号码、房间号码等。这些都存储在 ActiveDirectory 中。
【讨论】: