如何阅读de Exchange数据库?

时间:2009-02-10 15:58:49

标签: c# database visual-studio exchange-server

即时创建一个必须从Microsoft Exchange读取和更新联系人信息(如电话号码,电子邮件等等)的应用程序......

有没有人知道如何连接到MS Exchange DB?

5 个答案:

答案 0 :(得分:2)

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));

希望这能指出你正确的方向

答案 1 :(得分:1)

您必须使用扩展MAPI,它不是标准的SQL数据库。

答案 2 :(得分:1)

如果您使用的是Exchange 2007,则可以使用Exchange Web Services

答案 3 :(得分:1)

你可以:

使用ExtendedMAPI。在网上寻找MAPI33。它有我想要做的例子。

使用网络服务。这是2007年的首选方式

WebDAV也有效,但我认为它根本不适用于2007年?

MAPI是最好的方式,但它在.NET中没有正式支持(它可以工作),它并不适用于64位模式。它只有32位。

答案 4 :(得分:0)

您可以使用ExchangeManagmentShell并发出powershell命令,例如 set-mailbox 来更改电子邮件地址。

但如果您只想更新电话号码,房间号码等。这都存储在ActiveDirectory中。