2004年03月01日
川俣晶の縁側ソフトウェア技術雑記 total 16108 count

C#からOutlookを制御して電子メールを送信させる

Written By: 川俣 晶連絡先

 ちょっと気になったので、時間がないのに書いてみたものです。C#から、Outlook 2003をコントロールして、電子メールの送信を実行するテストプログラムです。

ソースコード §

 Visual Studio 2003のC#のコンソールアプリケーションのテンプレートでプロジェクトを新規作成。その後、参照の追加でCOMタブからMicrosoft Outlook 11.0 Object Libraryへの参照を追加しておきます。

using System;

using Microsoft.Office.Interop.Outlook;

namespace ConsoleApplication15

{

    class Class1

    {

        [STAThread]

        static void Main(string[] args)

        {

            ApplicationClass  app

                  = new ApplicationClass ();

            object mailObj = app.CreateItem(OlItemType.olMailItem);

            MailItemClass mail = (MailItemClass)mailObj;

            mail.To = "autumn@piedey.co.jp";

            mail.Subject = "test for Outlook Programming";

            mail.Body = "テスト本文";

            mail.Send();

        }

    }

}

 これを実行すると、プログラムが自動的に電子メールを送信しようとしていますという警告ダイアログボックスが出ます。「はい」をクリックすると送信されます。

で、どうなのかというと §

 ざっくばらんに言えば、Outlook2003に入っているspamフィルタの機能がプログラムから制御して使えたら嬉しいなと、そんなことを思ったわけです。Outlookでメールを読み書きするのは気が進まないので、Outlookでspamフィルタした後、自動的にWinBiffにでも送れれば言うことはないのですが。

 まず第1にOutlookプログラミングの資料があまりに少ない。そんなことやろうと思う人は他にほとんど居ないのかもしれません。(当然予想されることですね)

 第2に、自動送信1つで手動クリックが要求されるようでは、実用的とは言えません。もちろん、キーボードを叩いたふりをさせて、これを自動化することも不可能ではありませんが、確実性に欠けます。

 というわけで、ちょっと思い付いた小さなアイデアは、あまり訳に立ちそうにないという結論で終わりそうです。

 既存のspamフィルタサービスは、微妙なところで、(時には根本的なところで)、思い通りにならないので、プログラムで制御できれば最も嬉しいのですが……。なかなか難しいですね。