Outlook用アドインを作成する際、検索をするとVisual Studioを使用した作成方法が多いですが、Visual Studioを使用することができない環境で作業を実施している方もいるかと思います。そのため、メモ帳とコマンドプロンプトのみでアドインが作成できないか試行錯誤してみました。
試しに、メール送信時に確認ダイアログを表示するOutlookアドインを作成してみました。以下はプログラムの解説です。
プログラム
using System;
using System.Windows.Forms;
using Microsoft.Office.Interop.Outlook;
public class OutlookAddIn
{
// 仮のGUID(後で置き換える)
private static readonly string AddInGuid = "{12345678-1234-5678-1234-567812345678}";
public static void Main(string[] args)
{
// Outlookアプリケーションのインスタンスを作成
Microsoft.Office.Interop.Outlook.Application outlookApp = new Microsoft.Office.Interop.Outlook.Application();
// メール送信前のイベントハンドラを追加
((ApplicationEvents_11_Event)outlookApp).ItemSend += OutlookAddIn_ItemSend;
// アドインが起動したことをコンソールに表示
Console.WriteLine("Outlookアドインが起動しました。終了するにはEnterキーを押してください。");
Console.ReadLine();
}
// メール送信前のイベントハンドラ
private static void OutlookAddIn_ItemSend(object Item, ref bool Cancel)
{
// 送信しようとしているメールアイテムを取得
Microsoft.Office.Interop.Outlook.MailItem mailItem = Item as Microsoft.Office.Interop.Outlook.MailItem;
if (mailItem != null)
{
// 宛先やCCの情報を取得し、ダイアログメッセージを構築
string mailTo = mailItem.To;
string mailCc = mailItem.CC;
string alertMsg;
mailTo = mailTo.Replace(";", "\r\n");
mailCc = mailCc.Replace(";", "\r\n");
alertMsg = "件名: " + mailItem.Subject + "\r\n\r\n" +
"To: \r\n" + mailTo + "\r\n\r\n" +
"Cc: \r\n" + mailCc + "\r\n\r\n" +
"\r\n上記宛先へメールを送信してもよろしいですか?";
// メッセージボックスを表示する
MessageBox.Show(alertMsg, "確認", MessageBoxButtons.OK, MessageBoxIcon.Information);
// ユーザーがEnterキー以外を押した場合、送信をキャンセル
if (Console.ReadKey().Key != ConsoleKey.Y)
{
Cancel = true;
}
}
}
}
コンパイル方法
このアドインはC#で書かれており、CSC.exe(C# コンパイラ)を使用してコンパイルします。また、コンパイル時には「Microsoft.Office.Interop.Outlook.dll」を参照しています。これは、Outlookの開発用インターフェースを提供するInteropライブラリです。
コマンドプロンプトで実際に下記コマンドを参考にコンパイルを実施することで、EXEファイルが生成されます。
"csc.exe" /r:"実際のフォルダパス\Microsoft.Office.Interop.Outlook.dll" "CSファイルパス"
動作の概要
- メインメソッドでは、Outlookアプリケーションのインスタンスを作成し、メール送信前のイベントハンドラを追加しています。
- メール送信前のイベントハンドラでは、送信しようとしているメールの情報を取得し、それを元にメッセージボックスを表示しています。ユーザーがEnterキー以外を押すと、メールの送信がキャンセルされます。
注意事項
- このアドインはコンソールアプリケーションとして動作しますが、Outlookアプリケーションに組み込むことができます。
- お試しで作成したため、メールの送信キャンセルはコンソールからの入力(
Console.ReadKey().Key
)によって行われており、実際のアドインではUIの統合が必要です。