LoginSignup
17

More than 5 years have passed since last update.

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

Posted at

概要

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

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

完成品

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

※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)…」を選ぶと作成できます。
Visual Studio.PNG

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

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

まとめ

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17