我目前在 C# 云服务应用程序中使用 Microsoft.Azure.ActiveDirectory.GraphClient,该应用程序根据存储在数据库中的信息管理 Office 365 中的用户配置和更新。
我面临的问题是用户邮件地址的设置。在提供新用户时,设置新用户对象的邮件地址属性会导致 Graph 客户端抛出错误。配置新用户时,主 SMTP 地址会自动设置为用户的 UPN。以下代码将成功创建新用户并将主 SMTP 地址设置为与为 UserPrincipalName 设置的值相同:
IUser newUser = new User();
newUser.DisplayName = "Firstname Surname";
newUser.UserPrincipalName = "someone@somewhere.com";
newUser.AccountEnabled = true;
newUser.MailNickname = "firstnamesurname";
newUser.ImmutableId = "0k3otwAAEkm8vGSKbJqRZg==";
newUser.PasswordProfile = new PasswordProfile
{
Password = "somerandompassword",
ForceChangePasswordNextLogin = true
};
newUser.UsageLocation = "GB";
_activeDirectoryClient.Users.AddUserAsync(newUser).Wait();
很公平 - UPN 和主电子邮件地址不匹配可能会导致自动发现问题。
我遇到的问题是用户对象的“邮件”属性在更新用户时设置时也会引发错误。
以下代码将成功更新用户:
User retrievedUser = new User();
List<IUser> retrievedUsers = null;
retrievedUsers = _activeDirectoryClient.Users
.Where(searchUser => searchUser.ImmutableId.Equals(0k3otwAAEkm8vGSKbJqRZg==))
.ExecuteAsync().Result.CurrentPage.ToList();
if (retrievedUsers != null && retrievedUsers.Count == 1)
{
retrievedUser = (User)retrievedUsers.First();
retrievedUser.UserPrincipalName = "someone1@somewhere.com";
retrievedUser.UpdateAsync().Wait();
}
上述代码将更改用户的 UPN,但不会像添加新用户场景中那样更新主 SMTP 地址。我不明白这一点,因为它可能会导致自动发现问题(因为 UPN 与主 SMTP 地址不同)并否定在创建新用户时无法设置邮件地址的任何原因。
我找不到有关如何更新用户电子邮件地址或将其他电子邮件地址设置为主 SMTP 地址的任何详细信息。此要求的场景例如,当用户结婚并且他们希望有一个新的电子邮件地址作为他们的主要电子邮件地址时。
有没有人知道如何使用 Microsoft.Azure.ActiveDirectory.GraphClient 管理用户的主 SMTP 地址?我可以找到有关设置其他电子邮件地址的信息,但找不到有关如何更改主 SMTP 地址的信息。
感谢您的帮助!