EWS: Update Out-of-Office (OOF) sample application

This sample program shows how the OOF message can be manipulated using the EWS Managed API.  Full source (Visual Studio 2013) is included, and the program can be run from the command-line (so can be incorporated into scripts) or with UI.  When run from the Visual Studio IDE, the UI will be shown and any…


Exchange Web Services and SharePoint 2013 without ApplicationImpersonation

I previously wrote an article showing how to set up Sharepoint 2010 to be able to access users’ mailboxes using EWS and integrated authentication (i.e. no service account was needed for the EWS calls).  Things have changed with Sharepoint 2013, so this article details the process with the latest versions of the products (at the…


PowerShell: Merge mailbox folders

Note: I have removed the script download from this page, as maintaining it in two places seems unnecessary.  The new home for this script and any updates is here: https://code.msdn.microsoft.com/office/PowerShell-Merge-mailbox-e769c529.   A couple of years ago I wrote a script to move items from one folder to another in a user’s mailbox.  This seems to…


PowerShell: Search for a contact within a mailbox (or multiple mailboxes)

The attached script shows how to use EWS to search for a particular contact (based on email address) within one or more mailboxes, writing any found occurrences to a log file.  You can process multiple mailboxes in a couple of ways (well, there are probably other alternatives too, but these should cover most requirements!).  …


Troubleshooting Exchange 2013 Mail Apps – ExecuteEwsProxy calls

  The ExecuteEwsProxy call The ExecuteEwsProxy call servers as a means of sending through EWS requests from Mail Apps. The implementation of the ExecuteEwsProxy call can be reduced to six basic steps: The app post an ExecuteEwsProxy call to OWA (Frontend) (https://OWA_DNS_NAME:443/owa/service.svc?action=ExecuteEwsProxy) The Frontend proxies the request over to the Backend (https://BACKEND_FQDN:444/owa/service.svc?action=ExecuteEwsProxy) The Backend posts…

1

Exchange: Automating a Welcome Email to New Users

Since Exchange 2010, it has been possible to use Scripting Agents to perform additional checks/processing when certain cmdlets are run.  This feature can be used to automatically send an email to welcome new users.  An overview of scripting agents and how they work can be found on Technet. To send an email when a new…


PowerShell: Setting the global reading pane view in OWA

Attached is a script that can be used to update the global reading pane view for OWA, and can be run against multiple mailboxes from PowerShell.  It requires the EWS Managed API to be installed on the client machine, and if running against multiple mailboxes you’ll need to grant impersonation rights to the authenticating account. …


How to clear SIDHistory and keep mailbox permissions

The SIDHistory attribute of a user object is used to store old SIDs for that user (usually SIDs from other domains when the user is migrated).  In some cases, over time, this attribute can hold lots of values (every time a user is migrated, the previous SID is added to the list), and we sometimes…


Programmatically add Links to Outlook ContactItems in Outlook 2013

With the Links interface now deprecated in the Outlook 2013 Interop, a lot of people still want to be able to link contacts. If you wish to do so and are willing to go the extra mile, you should be able to link contacts by setting/modifying these four properties using Extended MAPI: 1. http://schemas.microsoft.com/mapi/id/{00062008-0000-0000-C000-000000000046}/853A101E Named…

1

How to create and use a Code Signing Certificate for ClickOnce VSTO applications using Active Directory Certificate Services

When deploying a VSTO project within an enterprise, you can use an internally created certificate to avoid the “Unknown Publisher” prompt when deploying (you’ll get this if you attempt to deploy using the test certificate that is automatically created by Visual Studio).  This guide takes you through the entire process.  Note that the first two…

6