Ma solution est la suivante:
J'ai créé un compte d'utilisateur qui dispose d'un accès complet à toutes les boîtes aux lettres (vous pouvez l'accorder au niveau du serveur).
J'ai ensuite écrit un petit programme qui fonctionne avec ces autorisations, mais configuré de telle manière que l'utilisateur accédant au programme n'a pas besoin du mot de passe. Pour ce faire, exécutez le programme sur un serveur Web à l'aide de l'emprunt d'identité.
C'est dans VB.NET / WebForms.
Dans web.config:
<identity impersonate="true" userName="domain\username" password="password" />
Ensuite, il y a une page ASP.NET vraiment simple. Dans l'aspx, j'ai ceci:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="SetOOF._Default" AspCompat="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<p>
Username
<asp:TextBox ID="txtUsername" runat="server"></asp:TextBox>
<asp:Button ID="btnGetUser" runat="server" Text="Select" />
</p>
<p>
<asp:Label ID="lblUserName" runat="server"></asp:Label>
</p>
<p> <asp:CheckBox ID="chkOofEnabled" runat="server" /> Out of Office on/off
</p>
</div>
<p>
<asp:TextBox ID="txtOofText" runat="server" Height="217px" Width="479px"
TextMode="MultiLine"></asp:TextBox>
</p>
<p>
<asp:Button ID="btnUpdateUser" runat="server" Text="Update User" />
</p>
</form>
</body>
</html>
et dans le fichier .vb, j'ai
Imports MAPI
Partial Public Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Protected Sub btnGetUser_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnGetUser.Click
Dim ses As MAPI.Session
ses = New MAPI.Session
ses = CreateObject("MAPI.Session")
ses.Logon(ShowDialog:=False, NoMail:=True, ProfileInfo:="mailserver" & vbLf & txtUsername.Text)
Dim user As MAPI.AddressEntry = ses.CurrentUser
lblUserName.Text = user.Name
chkOofEnabled.Checked = ses.OutOfOffice
txtOofText.Text = ses.OutOfOfficeText
ses.Logoff()
End Sub
Protected Sub btnUpdateUser_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnUpdateUser.Click
Dim ses As New MAPI.Session
ses = CreateObject("MAPI.Session")
ses.Logon(ShowDialog:=False, NoMail:=True, ProfileInfo:="mailserver" & vbLf & txtUsername.Text)
ses.OutOfOffice = chkOofEnabled.Checked
ses.OutOfOfficeText = txtOofText.Text
ses.Logoff()
End Sub
End Class
Notez que vous devrez installer Outlook sur le serveur Web sur lequel vous l'exécutez, car il utilise MAPI pour se connecter au serveur de messagerie (vous avez également besoin d'une référence au niveau du projet à la bibliothèque Microsoft CDO, qui est MAPI). Tant que vous êtes une seule organisation Exchange, peu importe le serveur de messagerie - Exchange redirigera l'application vers le bon serveur.
Vous pouvez utiliser la section de votre web.config pour restreindre l'accès à l'application à votre helpdesk et à vos administrateurs système afin que les utilisateurs ordinaires ne puissent pas accéder à l'application eux-mêmes.