繁体   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