[英]Auto-discover exchange where username != email-address. Use URN rather than domain\username?
我有一封電子郵件,嘗試通過Microsoft.Exchanage.WebServices訪問。 具體來說,我正在嘗試自動發現URL。 我在Microsoft遠程連接分析器中運行以下命令(此方法有效):
Email address: foooosoft.fiiztestmailbox@baaar.eu
Domain\User Name (or UPN): baaarnet\foooosoft.fiiztestma
(foooosoft.fiiztestmailbox@baaar.eu also works)
Password: password1
這是因為有人告訴我我的用戶名是foooosoft.fiiztestma,因為SAMAccountNames的長度限制(20個字符)。
嘗試使用我的電子郵件地址作為帳戶名會導致401錯誤。 如何更改代碼以考慮到這一點?
我嘗試向WebCredentials構造函數提供“ foooosoft.fiiztestma”,但出現相同的錯誤。
或者,是否有辦法簡化程序,僅提供UPN(電子郵件地址),而不使用域名\\用戶名?
public class Program
{
public static void Main(string[] args)
{
string emailUser = "foooosoft.fiiztestmailbox@baaar.eu";
string password = "password1";
string domain = "baaarnet";
var credentials = new WebCredentials(emailUser, password, domain);
var foo = new ExchangeService
{
Credentials = credentials,
Url = DiscoverExchangeUrl(emailUser, credentials),
TraceEnabled = false
};
}
private static Uri DiscoverExchangeUrl(string emailAddress, ExchangeCredentials credentials)
{
var autoDiscover = new AutodiscoverService
{
Credentials = credentials,
EnableScpLookup = false,
RedirectionUrlValidationCallback = url => true,
TraceEnabled = false
};
var userSettings = autoDiscover.GetUserSettings(emailAddress, UserSettingName.ExternalEwsUrl);
return new Uri(userSettings.Settings[UserSettingName.ExternalEwsUrl].ToString());
}
}
我很幸運提供UPN作為用戶名和一個空字符串作為域名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.