Outlookでメールの送信前に確認を表示するVSTOアドインを作ってみた。


概要

Outlookで、メールの送信前に「本当に送信しますか?」といった確認を表示したかったので、
VSTO(Visual Studio Tools for Office)で、簡単なOutlookのアドインを作ってみました。
とっても簡単にOutlookのアドインが作成できました(∩´∀`)∩

Visual Studioが配布用のインストーラまで作成してくれるので、
社内で配布したい場合も、ある程度スムーズにできるかと思います。

完成品

Outlook 2016でメールを送信しようとすると、下記のような確認が表示されます。

※Outlook2016でのみ動作確認をしています。

制作環境

  • Windows10
  • Visual Studio Community 2015 Update2
  • Office Developer Tools (ここからダウンロードできます)

プロジェクトの種類

  • Outlook 2013 と 2016 VSTO アドイン (Visual C#)

ソース

メールの送信時にダイアログを表示しているだけです。

ThisAddIn.cs
using Outlook = Microsoft.Office.Interop.Outlook;
using System.Windows.Forms;
using static System.Environment;

namespace OutlookAddIn1
{
    public partial class ThisAddIn
    {
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            Application.ItemSend += new Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend);
        }

        public void Application_ItemSend(object Item, ref bool Cancel)
        {

            Outlook.MailItem mail = Item as Outlook.MailItem;

            DialogResult result = MessageBox.Show
                ($"送り先(To):{mail.To}{NewLine}送り先(CC):{mail.CC}{NewLine}送り先(BCC):{mail.BCC} ",
                "本当にメールを送信しますか?",
                MessageBoxButtons.YesNoCancel,
                MessageBoxIcon.Exclamation,
                MessageBoxDefaultButton.Button2);

            if (result == DialogResult.Yes)
            {
                //メールを送信
            }
            else if (result == DialogResult.No)
            {
                Cancel = true;
            }
            else if (result == DialogResult.Cancel)
            {
                Cancel = true;
            }
        }


        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
            //注: Outlook はこのイベントを発行しなくなりました。Outlook が
            //    シャットダウンする際に実行が必要なコードがある場合は、http://go.microsoft.com/fwlink/?LinkId=506785 を参照してください。
        }

        #region VSTO で生成されたコード

        /// <summary>
        /// デザイナーのサポートに必要なメソッドです。
        /// このメソッドの内容をコード エディターで変更しないでください。
        /// </summary>
        private void InternalStartup()
        {
            this.Startup += new System.EventHandler(ThisAddIn_Startup);
            this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
        }

        #endregion
    }
}

配布用インストーラの作成方法

プロジェクト名を右クリックして「公開(B)…」を選ぶと作成できます。

インストール時にエラーが表示される場合

アドインのインストール時にエラーが表示されることがあります(´・ω・`)
これは、こちらに書かれているとおり、
ユーザ側で.vstoファイルと.dll.manifestファイルのブロックを解除することでインストールできるようになります。

まとめ

VSTOアドインの情報があまり出回っていないような気もしますが、
簡単にOutlookなどのOffice製品に機能を追加できて便利だと思います(`・ω・´)