自动发现交易所,其中用户名 != 电子邮件地址.使用 URN 而不是域用户名

本文关键字:用户 URN 使用 电子邮件地址 交易所 发现 | 更新日期: 2023-09-27 18:32:11

我有一封电子邮件,我试图通过Microsoft.Exchanage.WebServices访问。具体来说,我正在尝试自动发现网址。我在远程连接分析器中运行以下命令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());
    }
}

自动发现交易所,其中用户名 != 电子邮件地址.使用 URN 而不是域用户名

我很幸运地提供了 UPN 作为用户名和一个空字符串作为域名。