概要
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製品に機能を追加できて便利だと思います(`・ω・´)