Моє рішення таке:
Я створив обліковий запис користувача, який має повний доступ до кожної поштової скриньки (ви можете надати це на рівні сервера).
Потім я написав невелику програму, яка працює з цими дозволами, але налаштована таким чином, що користувачеві, який звертається до програми, не потрібен пароль. Це робиться, запустивши програму на веб-сервері за допомогою представлення себе.
Це у 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 для підключення до поштового сервера (вам також потрібна довідка на рівні проекту на бібліотеку CDO Microsoft, яка є MAPI). Поки ви всі є однією організацією Exchange, не має значення, на який поштовий сервер - Exchange перенаправить додаток на потрібний сервер.
Ви можете скористатися розділом web.config, щоб обмежити доступ до програми до своєї служби підтримки та системних адміністраторів, щоб звичайні користувачі не могли самі отримати доступ до програми.