TIPS:Windows標準機能とWSHを使ってメールを送信するコマンド・プロンプトでメールを送信できれば、さまざまな管理業務などに応用することができる。その場合、Windowsの標準機能だけで送信できるようになっていると、OSプラットフォームを問わずに利用できる。Windowsシステムに含まれるCDOコンポーネントを利用することで、WSHスクリプトからメールを送信することができる。解説いまや、メールがさまざまな仕事の起点になっているという人も多いのではないか。チームでの情報交換や会議の案内、社外の取引先との連絡などに加え、備忘録代わりのメッセージを自分自身にメールしているという人もいるようだ。なってくると、すべての情報通知をメールに一本化したくなる。読者がシステム管理者なら、さまざまな管理業務の通知をメールで受け取りたいと考えているかもしれない。サーバがハングアップしたとき、ファイアウォールがワームのアタックを受けたとき、ハードディスクの容量がいっぱいになったとき、アプリケーションのメモリ・リークによって使用可能メモリが逼迫(ひっぱく)したときなど、メールで通知を受けたいと思うだろう。携帯電話のメール・アドレスに転送すれば、どこにいてもサーバ・トラブルをいち早く把握できる。Host)スクリプトから利用すれば、スクリプトからのメール送信が可能になる。と前準備CDOについては、マイクロソフトからもあまりまとまったドキュメントが提供されていない。Labで実際に各OSをインストールして確かめてみた。結果は以下のとおりである。Professionalでは、特に設定は不要で、デフォルトの状態で利用可能である。2003でも利用可能だが、セキュリティを強化するため、SMTPサービスはデフォルトではロックダウンされている。2003でメール送信を行うには、明示的にSMTPサービスを開始する必要がある。Service]を追加する。EditionにはSMTPサービスは提供されていない。EditionだけではCDOを利用したメール送信はできないが、外部のSMTPサーバを使えば送信可能である。具体的なスクリプトについては後述する。●最も簡単な送信スクリプトそれではさっそく、スクリプトを紹介しよう。自分自身のSMTPサービスを利用する最も単純なスクリプトである。赤字の部分は、環境に応じて変更すること。1行目でCDOのメッセージ・オブジェクトを作成し、2行目以降でFromプロパティにメッセージの差出人を、Toプロパティにメッセージのあて先を、Subjectプロパティにメッセージの件名を、TextBodyプロパティにメッセージの本文を代入して、6行目でCDOオブジェクトのSendメソッドを実行し、メッセージを送信している。5行目のvbCrLfは改行コードの指定で、この位置に改行コードが挿入される。Nowは現在の日時を文字列で返すVBScriptの関数で、こうするとメッセージ本文の最後に発信時刻が記録される。ここでは各プロパティに差出人やあて先、メッセージ本文などを直接指定したが、より複雑なスクリプトを作成して、例えばイベントによってあて先や本文を切り替える、別ファイルに記録した複数のアドレスに同報送信するなどが可能である。これらは本稿の目的から外れるので説明しない。機会があれば別途解説することにしよう。試しに上記のスクリプトを実行してみよう。テキスト・エディタなどで上記のコードを入力し、ファイルに保存する(例えばMail.vbs)。行頭の番号は説明のために付けたものなので、実際に入力してはいけない。次にコマンド・プロンプトを起動し、WSHスクリプトをコマンドラインから起動するためのcscriptで実行する。Mail.vbs送信メールを受信した結果は次のとおり。スクリプトで送信されたメールこのスクリプトを利用すると、システム・トラブルの発生などをメールで通知できるようになる。Editionを使っているか、何らかの理由でSMTPサービスをインストールできない場合には、自前のSMTPサービスを利用する代わりに、外部のSMTPサーバを利用してメッセージを送信することができる。これにはCDOのConfigurationプロパティを使う。サンプル・コードは次のとおり。赤字の部分は、環境に応じて変更すること。前半部分(5行目まで)は先ほどと同じだが、後半部分(6行目以降)でメール送信の設定を変更している。送信方法は、このようにCDOのConfigurationプロパティを使う。Configurationプロパティは、プログラムIDが“CDO.Configuration”のCOMオブジェクトになっており、このFieldsプロパティからそれぞれの設定にアクセスできる。各設定項目は「http://schemas.microsoft.com/」で始まるURIで識別される。これらのURIは、設定項目を表すキーワードでしかなく、ブラウザでアクセスしてもページが存在するわけではない。「.../sendusing」は送信方法を(7行目)、「.../smtpserver」はSMTPサーバの名前を(9行目)、「.../smtpserverport」はSMTPサービスを提供しているポート番号を(12行目)それぞれ表す。このサンプルでは、SMTPサーバに「mail.example.co.jp」の25番ポート(SMTPの標準ポート)を指定しているが、この部分はプロバイダのメール・サーバなど、運用する環境に合わせて変更していただきたい。sendusingに設定する数字は次の表のように決められている。DBを利用してローカルのExchangeに接続するsendusingの設定値デフォルト値は1である。先に紹介した「最も単純なスクリプト」では、CDOオブジェクトのConfigurationプロパティを指定していないが、その場合sendusingには1が使われ、ローカルのSMTPサービスが使われるというわけだ。今回は外部のSMTPサービスを使うためsendusing値に2を指定している。Configurationプロパティの値を設定したら、Updateメソッドにより設定を更新する(13行目)。最後にSendメソッドによりメールを送信している(14行目)。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。