Setting Out of Office message for someone else

There is no way to do it from the Exchange system Manager, but you can give yourself FULL access to their mailbox, and the profile, and do it that way. Then you don't have to change the password. As Kara pointed out, instead of the profile, if you have outlook web access enabled (OWA), you can use that.

Please first go into ADUC (Active Directory Users and Computers), expand the domain, locate the Users, in the right panel, find the user that you need to set the Out Of Office.

Right click it, in the Exchange Advanced tab, click Mailbox Rights, confirm your account has the rights for read permissions and full mailbox access. Then click OK.

After that, please open Control Panel, locate Mail icon, double click it, click Show Profiles button, click Add button, then follow the wizard to create the user profile. When you are prompted to input the user account and password, please input your account and password instead of the user profile itself.

--http://social.technet.microsoft.com/Forums/en-US/...


My solution is this:

I created a user account that has full mailbox access to every mailbox (you can grant this at the level of the server).

I then wrote a little program that runs with these permissions, but set up in such a way that the user accessing the program does not need the password. This is done by running the program on a web server using impersonation.

This is in VB.NET / WebForms.

In web.config:

<identity impersonate="true" userName="domain\username" password="password" />

Then there is a really simple ASP.NET page. In the aspx, I have this:

<%@ 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>
        &nbsp;<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>

and in the .vb file, I have

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

Note that you will need to have Outlook installed on the web server you run this on, as it uses MAPI to connect to the mailserver (you also need a reference at the project level to Microsoft CDO Library, which is MAPI). As long as you are all one Exchange Organisation, it doesn't matter which mailserver - Exchange will redirect the app to the right server.

You can use the section of your web.config to restrict access to the app to your helpdesk and sysadmins so ordinary users can't access the application themselves.


You can use Exchange PowerShell Set-MailboxAutoReplyConfiguration for this:

To Enable

Set-MailboxAutoReplyConfiguration -Identity tony -AutoReplyState Enabled -InternalMessage "Internal auto-reply message."
-ExternalMessage "External auto-reply message."

Scheduled

Set-MailboxAutoReplyConfiguration -Identity tony -AutoReplyState Scheduled -StartTime "7/10/2015 08:00:00" -EndTime "7/15/2015 17:00:00" -InternalMessage "Internal auto-reply message"

To Disable

Set-MailboxAutoReplyConfiguration -Identity tony -AutoReplyState Disabled