从ASP.NET MVC Web应用程序向用户Outlook日历添加约会/会议

时间:2017-03-23 09:17:06

标签: asp.net-mvc outlook exchange-server exchangewebservices

我正在为一家拥有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 ......我不知道。

1 个答案:

答案 0 :(得分:0)

你绝对可以使用模拟来做到这一点。这样您就不需要拥有顾问的密码。您只需要模拟帐户的电子邮件和密码。

使用此链接详细了解Impersonation ConfigurationMore 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角色被授予专用于特定应用程序或应用程序组的服务帐户,而不是用户帐户。您可以根据需要创建任意数量的服务帐户。

  •   

因此,您必须确保解决这些问题。

我希望这会有所帮助。

以下是其他有用的链接: