내 해결책은 이것입니다 :
모든 사서함에 대한 전체 사서함 액세스 권한이있는 사용자 계정을 만들었습니다 (서버 수준에서이 권한을 부여 할 수 있음).
그런 다음 이러한 권한으로 실행되는 작은 프로그램을 작성했지만 프로그램에 액세스하는 사용자가 암호를 요구하지 않는 방식으로 설정했습니다. 가장을 사용하여 웹 서버에서 프로그램을 실행하면됩니다.
이것은 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
MAPI를 사용하여 메일 서버에 연결하므로이를 실행하는 웹 서버에 Outlook을 설치해야합니다 (프로젝트 수준에서 Microsoft CDO 라이브러리 (MAPI)에 대한 참조도 필요함). Exchange 조직이 하나 인 한 어떤 메일 서버와 상관없이 Exchange는 앱을 올바른 서버로 리디렉션합니다.
web.config 섹션을 사용하여 일반 사용자가 응용 프로그램 자체에 액세스 할 수 없도록 앱에 대한 액세스를 헬프 데스크 및 sysadmin으로 제한 할 수 있습니다.