2012-03-14 235 views
4

H i。我想知道我用戶的Exchange服務器的地址(假設她在典型的Windows辦公網絡中)。這是在C#應用程序中。在.NET中獲取用戶的Exchange服務器和電子郵件地址


我已經有用戶的電子郵件地址,我發現它在System.DirectoryServices.AccountManagement.UserPrincipal.Current.EmailAddress,引用System.DirectoryServices.AccountManagement

+0

Exchange Server 2007和2010附帶[** Autodiscover **](http://technet.microsoft.com/zh-cn/library/cc511507.aspx) - 不知道它是否適用於您的情況。 – 2012-03-14 21:03:34

回答

2

我將此用於我的Exchange客戶端應用程序。

  1. 安裝Exchange Web Services Managed API
  2. 更改你的C#項目的屬性/應用改變了目標框架 '.NET框架4' 而不是' .NET 4客戶端配置文件」
  3. 參考C:\Program Files\Microsoft\Exchange\Web Services\1.1\Microsoft.Exchange.WebServices.dll

現在代碼:

var exchange = new ExchangeService(); 
exchange.AutodiscoverUrl(from); 
var server = exchange.Url.Host; 
Console.WriteLine(server); 

這裏是MSDN documentation。但請注意這是針對API的未發佈版本1.2的。我找不到版本1.1的文檔

+0

謝謝kjosh,這看起來很有希望。我會在星期一測試它 – 2012-03-24 18:17:33

+0

我安裝了你的鏈接,但找不到'.dll'來引用。最後在'C:\ Program Files \ Microsoft \ Exchange \ Web Services \ 1.1'上找到它。 – 2012-03-26 08:15:02

+0

感謝您的更新Matt – kjosh 2012-03-26 17:36:19

1

您正在尋找所謂的homeMDB AD屬性後: http://msdn.microsoft.com/en-us/library/ms980583(v=exchg.65).aspx

我不認爲這個屬性有一個很好的.NET包裝器,所以你需要使用一個低級別的LDAP API來獲取它。

請注意,對於更高版本的Exchange(即2010),您可以連接到任何CAS角色,Exchange將找出路由。

+0

對不起,我不明白如何使用你發佈的內容。 – 2012-03-15 13:03:16

+0

對System.DirectoryServices的調用實際上只是使用LDAP來查詢Active Directory以獲取userprincipal對象。它作爲一個很好的.NET包裝來讀取特定的LDAP屬性。 Exchange將同一用戶主體對象中的Exchange服務器存儲在一起,除了它位於名爲homeMDB的屬性中。它看起來不像System.DirectoryServices有一個很好的.NET包裝器,所以你需要使用像DirectoryEntry這樣的東西讀取屬性。請參閱http://support.microsoft.com/kb/313114 – 2012-03-15 19:47:15

+0

至於我的筆記,如果您使用的是更高版本的版本,您可能甚至不需要知道哪臺Exchange服務器。在這種情況下,您可以簡單地指向與OWA相同的服務器,並且「它將正常工作。」 – 2012-03-15 19:51:00

相關問題