簡體   English   中英

自動發現交換,其中用戶名!=電子郵件地址。 使用URN而不是域\\用戶名?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM