1

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

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

4

5 回答 5

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

希望这会为您指明正确的方向

于 2009-02-10T16:13:04.493 回答
1

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

于 2009-04-15T14:22:42.637 回答
1

你可以:

使用扩展 MAPI。在网上寻找 MAPI33。我认为它有你想做的例子。

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

WebDAV 也可以工作,但我认为它在 2007 年根本不工作?

MAPI 是最好的方法,但它在 .NET 中不受官方支持(它可以工作),并且它根本不能在 64 位模式下工作。它只有 32 位。

于 2009-04-15T14:27:56.040 回答
1

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

于 2009-02-10T16:09:31.820 回答
0

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

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

于 2012-08-28T13:15:56.400 回答