ทางออกของฉันคือ:
ฉันสร้างบัญชีผู้ใช้ที่มีการเข้าถึงกล่องจดหมายทั้งหมดไปยังกล่องจดหมายทั้งหมด (คุณสามารถให้สิทธิ์ในระดับเซิร์ฟเวอร์)
ฉันเขียนโปรแกรมเล็ก ๆ ที่ทำงานด้วยการอนุญาตเหล่านี้ แต่ตั้งค่าในลักษณะที่ผู้ใช้เข้าถึงโปรแกรมไม่จำเป็นต้องใช้รหัสผ่าน สิ่งนี้ทำได้โดยการรันโปรแกรมบนเว็บเซิร์ฟเวอร์โดยใช้การรับบทบาท
นี่คือใน VB.NET / WebForms
ใน web.config:
<identity impersonate="true" userName="domain\username" password="password" />
แล้วมีหน้า ASP.NET ที่เรียบง่ายจริงๆ ใน aspx ฉันมีสิ่งนี้:
<%@ 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>
และในไฟล์. vb ฉันมี
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
โปรดทราบว่าคุณจะต้องติดตั้ง Outlook บนเว็บเซิร์ฟเวอร์ที่คุณเปิดใช้งานเนื่องจากใช้ MAPI เพื่อเชื่อมต่อกับเซิร์ฟเวอร์อีเมล (คุณต้องมีการอ้างอิงในระดับโครงการไปยัง Microsoft CDO Library ซึ่งเป็น MAPI) ตราบใดที่คุณเป็นองค์กรแลกเปลี่ยนองค์กรเดียวไม่สำคัญว่า Mailserver ใด - Exchange จะเปลี่ยนเส้นทางแอปไปยังเซิร์ฟเวอร์ที่เหมาะสม
คุณสามารถใช้ส่วนของ web.config เพื่อ จำกัด การเข้าถึงแอปไปยังแผนกช่วยเหลือและ sysadmins ของคุณเพื่อให้ผู้ใช้ทั่วไปไม่สามารถเข้าถึงแอปพลิเคชันได้