HOME > ソフテックだより > 第171号(2012年10月3日発行) 技術レポート「Microsoft Collaboration Data Objectsを用いたメールの送信」

「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。

ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ


ソフテックだより 第171号(2012年10月3日発行)
技術レポート

「Microsoft Collaboration Data Objectsを用いたメールの送信」

1. はじめに

私は入社三年目の社員で、マイコンとパソコン両方のソフトウェア開発に携わってきました。監視システムの開発経験は多くありませんでしたが、今年、ある監視システムの機能追加に携わることになりました。
この監視システムは約10年前に開発されたシステムで、設備のトラブル状態は画面表示のみでした。この監視システムに電子メールでの異常通知機能を追加する作業を私が担当しました。
今回は、開発時に使用したMicrosoft Collaboration Data Objects(以下CDOと略称します)を用いたメール送信の操作方法についてご紹介させていただきます。

2. メール通知を利用した監視システム

今回開発対象となった監視システムを簡単に紹介します。
図1はシステム構成を簡単に示しています。

今回開発対象となる制御システムを簡単に紹介します。
図1. メール通知を用いた制御システム

この監視システムでは設備の監視を行い、トラブル発生や重要イベントが起こった場合、発生内容を画面上に表示するようにしています。しかし、メール通知機能を持たない旧システムにおいて、以下のデメリットがありました。

  • PC画面を常に見ていないとならない
  • 監視者がPCの場所から離れられず、同時に別の仕事を担当することができない
  • トラブル発生の場合、複数の担当者に連絡及び説明することに手間がかかる

上記の問題点を解決するため、このシステムにメール通知機能を具備させました。登録された担当者全員にメールを送信することによって、前述したデメリットを改善することができました。

3. CDOについて

本稿では、外部コンポーネントを使わないCDOによるメール送信について紹介します。CDOとは、「Microsoft Collaboration Data Objects」の略で、メッセージングアプリケーションやコラボレーションアプリケーションを構築するためのテクノロジーです。Windows 2000/XP/Vista/7には、標準で搭載されており、特にインストールや設定は不要です。

4. メール送信の実装例

CDOを利用して、VB、VBA、C、VC++など様々な開発環境でメールの送信を実現できます。以下に、最も単純なVBスクリプトを紹介します。

 1:
Set objEmail = CreateObject("CDO.Message")
 2:
objEmail.From        = "username1@sample.mail.jp"
 3:
objEmail.To            = "username2@sample.mail.jp"
 4:
objEmail.Subject     = "メール送信テスト"
 5:
objEmail.Textbody  = "CDOを用いたメール通知" & vbCrLf & "ソフテックだより"& vbCrLf & Now
 6:
objEmail.Configuration.Fields.Item_("http://schemas.microsoft.com/cdo/configuration/sendusing")=2
 7:
objEmail.Configuration.Fields.Item_("http://schemas.microsoft.com/cdo/configuration/smtpserver")=_"sample.mail.jp"
 8:
objEmail.Configuration.Fields.Item_("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=25
 9:
objEmail.Configuration.Fields.Item_("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")=1
10:
objEmail.Configuration.Fields.Item_("http://schemas.microsoft.com/cdo/configuration/sendusername")=abcdefg
11:
objEmail.Configuration.Fields.Item_("http://schemas.microsoft.com/cdo/configuration/sendpassword")=123456
12:
objEmail.Configuration.Fields.Update
13:
objEmail.Send

図2. メール送信のサンプルプログラム

上記プログラムの内容詳細を以下に説明します。

1行目:
CDOのオブジェクトを作成する
2行目:
メールの差出人を設定する
3行目:
メールの宛先を設定する(複数設定する場合「;」で区きる)
4行目:
メールの件名を設定する
5行目:
メールの本文を設定する
6行目:
送信方法を設定する (2:外部SMTPサーバ利用)
7行目:
SMTPサーバの名前を設定する
8行目:
SMTPサーバのポート番号を設定する
9行目:
SMTPサーバの認証方式を設定する(1:Basic認証)
10行目:
認証用ユーザIDを設定する
11行目:
認証用パスワードを設定する
12行目:
Configurationプロパティの設定を更新する
13行目:
メールを送信する

このスクリプトを実行すれば、以下のようなメールが送信されます。

このスクリプトを実行すれば、以下のようなメールが送信されます。
図3. メール内容

5. 終わりに

以上では、メール送信の操作方法を簡単に紹介しました。
監視システムにメール通知機能を備える事で迅速な対応が可能になると考えています。
例えば、異なるトラブルにおいて、それぞれを対応できる複数の担当者に通知することできます。さらに、膨大な監視データから特定のトラブル解析に有用なデータのみ抽出して担当者に通知することもできます。
現在、携帯電話などでも簡単にメール受信できますので、有効なツールとして活用できるものと思います。

(Y.N.)


関連ページへのリンク

関連するソフテックだより

ページTOPへ