Solusi saya adalah ini:
Saya membuat akun pengguna yang memiliki akses kotak surat penuh ke setiap kotak surat (Anda dapat memberikan ini di tingkat server).
Saya kemudian menulis sebuah program kecil yang berjalan dengan izin ini, tetapi mengatur sedemikian rupa sehingga pengguna yang mengakses program tidak memerlukan kata sandi. Ini dilakukan dengan menjalankan program pada server web menggunakan peniruan identitas.
Ini ada di VB.NET / WebForms.
Di web.config:
<identity impersonate="true" userName="domain\username" password="password" />
Lalu ada halaman ASP.NET yang sangat sederhana. Dalam aspx, saya punya ini:
<%@ 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>
dan dalam file .vb, saya punya
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
Perhatikan bahwa Anda harus menginstal Outlook di server web tempat Anda menjalankannya, karena menggunakan MAPI untuk menyambung ke server surat (Anda juga memerlukan referensi di tingkat proyek ke Perpustakaan CDO Microsoft, yang merupakan MAPI). Selama Anda semua satu Organisasi Exchange, tidak masalah server surat mana - Exchange akan mengarahkan aplikasi ke server yang tepat.
Anda dapat menggunakan bagian web.config Anda untuk membatasi akses ke aplikasi ke helpdesk dan sysadmin Anda sehingga pengguna biasa tidak dapat mengakses aplikasi itu sendiri.