我正在为一家拥有4名销售顾问的保险公司编写MVC预订申请。
通过此预订应用程序,人们可以直接在Outlook日历中预约这4位顾问中的一位。
如果我有4个顾问outlook-login-credentials(用户名和密码),那么我可以将预约/会议添加到这样的销售顾问日历中。
var service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
service.Credentials = new WebCredentials("user1@contoso.com", "password");
service.Url = new Uri(Settings.ExchangeServer);
var appointment = new Microsoft.Exchange.WebServices.Data.Appointment(service);
appointment.Subject = setAppointmentDto.Title;
appointment.Body = setAppointmentDto.Message;
appointment.Location = setAppointmentDto.Location;
...
appointment.Save(SendInvitationsMode.SendToAllAndSaveCopy);
如果我没有这些使用者的密码,我就无法使用下面的行。
service.Credentials = new WebCredentials ( "user1@contoso.com", "password");
我可以用不同的方式验证顾问(如何)?
Oauth2客户端凭据流(我不知道它是什么......以及如何使用它)?
所有四位销售顾问都已在Microsoft CRM和Windows中创建。它可能是通过(Active Directory ......我不知道。
答案 0 :(得分:0)
你绝对可以使用模拟来做到这一点。这样您就不需要拥有顾问的密码。您只需要模拟帐户的电子邮件和密码。
使用此链接详细了解Impersonation Configuration和More on Impersonation Configuration。
创建用户和角色后,将配置设置为允许模拟,您可以继续编写代码。
您实例化服务并设置如下凭据:
WebCredentials credentials = new WebCredentials(
"impersonate@domain.com", "YourPassword", "");
exchangeService = new ExchangeService { PreAuthenticate = true, Credentials =
credentials };
exchangeService.ImpersonatedUserId = new ImpersonatedUserId(
ConnectingIdType.SmtpAddress,
"consultant1@domain.com");
我在answer上找到了上述代码。
使用正确的凭据实例化服务后,您可以继续创建约会。您当前的代码应该有效:
var appointment = new
Microsoft.Exchange.WebServices.Data.Appointment(service);
appointment.Subject = setAppointmentDto.Title;
appointment.Body = setAppointmentDto.Message;
appointment.Location = setAppointmentDto.Location;
...
appointment.Save(SendInvitationsMode.SendToAllAndSaveCopy);
因为它会创建一个约会,主办方将是“consultant1@domain.com”。它还会将其添加到顾问的日历中。
您可以使用模拟功能,例如代表特定用户发送电子邮件,查看该用户的所有约会等。
要记住的一件重要事情是“假冒的安全注意事项”。根据{{3}}:
模拟可让调用者模拟给定的用户帐户。这使调用者能够使用与模拟帐户关联的权限执行操作,而不是与调用者帐户关联的权限。因此,您应该了解以下安全注意事项:
只有Exchange服务器管理员授予ApplicationImpersonation角色的帐户才能使用模拟。
您应创建一个管理范围,将模拟限制为指定的一组帐户。如果您不创建管理范围,则会将ApplicationImpersonation角色授予组织中的所有帐户。
通常,ApplicationImpersonation角色被授予专用于特定应用程序或应用程序组的服务帐户,而不是用户帐户。您可以根据需要创建任意数量的服务帐户。
因此,您必须确保解决这些问题。
我希望这会有所帮助。
以下是其他有用的链接: