メールチェックソフトを作ろう |
|
1.どんなものを作るのか |
|
メールを着信と同時に確認できたら便利だろうということを思いつき自分で作ってみようと試みました。メールが誰かから到着すると画面右下に着信メール数が表示されるというソフトを作成します。 |
|
|
1.メールを5秒おきにチェックし、新着メールがあったときはその件数を表示する。 |
2.使用プログラミング言語 |
|
|
3.作成方法 |
|||||||||||||||||||||||||||||
|
3-0.VBを起動してみよう |
||||||||||||||||||||||||||||
|
まず、起動方法です。 |
||||||||||||||||||||||||||||
|
標準ではスタート→プログラム→Microsoft VisualBasic6.0→Microsoft の中にあるMicrosoft VisualBasic6.0をクリックするとたちあがります。初期画面は図4を参照してください。 |
||||||||||||||||||||||||||||
|
3-1.表面的な部分を作る |
||||||||||||||||||||||||||||
|
まず表面的な部分を作っていきます。作り方は簡単です。ツールボックス(図1)から部品を選びフォーム(Form)に貼り付けていくだけです。 |
||||||||||||||||||||||||||||
|
|
1.接続先のサーバー名を入力するためのTextbox()を貼り付けます。 |
|||||||||||||||||||||||||||
|
次に表示部分を変更します。 |
||||||||||||||||||||||||||||
|
次にCommand
Buttonです。これはプロパティボックスのCaptionnという値を変更することで文字を変更できます。初期値はCommand1とCommand2になっているのでこれをそれぞれ「参照」に変更します。 |
||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
|
以上で基本的な表面部分の作成はおしまいです。ここまでの完成図は図3参照 |
図0 |
|
|||
|
|
|||
図1 |
図2 |
図3 |
|
|
|
|
|
|
|
図4 |
図5 |
|||
|
|
|||
3-2.仕組みを理解しよう |
|
次にメールをサーバーから受信する仕組みを理解します。 |
|
|
1.サーバーとポートを110に指定して接続します。(110はPOP3の番号) |
|
これをフローチャートで表すとフローチャート1(メール受信)のようになります。 |
フローチャート1(メール受信) |
|
※何らかの処理が成功すると次の 処理に移動します。失敗した場合 サーバーとの接続を切断し、一定 時間待ってから再度サーバーに接続 しなおします。 |
3-3.基本となるコードを書いていく |
|
|||||||
基本となるメール受信のコードを書いていきます。が、その前にサーバーとの接続、やりとりを容易にすることができる部品、周期的に同じ処理を行うことを可能にする部品を貼り付けます。(表面的には見えません。)ツールボックス(図1)の何も書いてないところを右クリックし、コンポーネントをクリックします。そしてその中から「Micorosoft Winsock Control 6.0」 を選びます。 |
|
|||||||
するとツールボックスにこのようなアイコンが追加されたと思います。それをフォームに貼り付けます。 |
|
|||||||
|
|
|||||||
以上で準備が整ったのでコードを記述していきます。 まずプログラムを立ち上げたときに実行されるコードを書きます。 |
|
|||||||
|
|
|||||||
|
|
|||||||
|
プログラム起動と同時にサーバーとの接続を開始しますのでここにはサーバーとの接続を行うコードを書きこみます。 |
|||||||
|
|
|||||||
|
|
|||||||
|
|
|||||||
|
||
ここに成功、失敗の判断、ユーザーの認証、パスワードの認証、メール数の取得のコードを書いていきます |
||
まずは成功か失敗かの判断になります。 |
||
|
||
|
|
||||||
|
||||||
|
||||||
次にメール数の受信です。"STAT"というコマンドを使用します。成功すると+OK メール数 総バイト数 のようなメッセージが返ってきます。(例:"+OK 1 1387") |
||||||
実際にメールを受信する過程は以上のみです。 |
接続のコードはすでに記述済みなので接続の成功か、失敗かの取得→→パスワードの送信まで書きます。
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
これで最初に宣言した変数Mail_nにメール数が格納されます。 |
||||||||||||||||
3-4.設定の保存と読み込み |
||||||||||||||||
メールチェックの基本となる部分のコードが書けたので次はユーザーが打ち込んだ"サーバー名"、"ユーザー名"、"パスワード"、"メーラー"、"音ファイル"の内容を保存する方法です。 |
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
図7 |
図8 |
|||||||||||||||
|
|
|||||||||||||||
3-5実装された機能、追加しなければいけない機能 |
||||||||||||||||
実装された機能についておさらいをしておきます。 |
||||||||||||||||
|
||||||||||||||||
図9 |
図10 |
|||||||||||||||
|
|
|||||||||||||||
3-6.実装しなければいけない機能1.を実装する |
||||||||||||||||
まず、メールがくると画面右下にメール数などを表示できるようにします。そのためにはフォーム(図10参照)を追加しなければいけません。プロジェクト→フォームの追加をクリックしてください(図11参照) |
||||||||||||||||
図11 |
図12 |
|||||||||||||||
|
|
|||||||||||||||
|
||||||||||||||||
図13 |
図14 |
|||||||||||||||
|
|
|||||||||||||||
|
|
|||||||||||||||
|
|
|||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
再びはじめのフォームに戻るためProject1→フォーム→Form1をダブルクリックしてください。(図16参照) |
||||||||||||||||
そしてメールがきたらForm2を表示するというコードを付け加えます。 |
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
図16 |
||||||||||||||||
|
||||||||||||||||
3-7.実装しなければいけない機能2を実装する |
||||||||||||||||
次は2.メールがくると同時に音楽を鳴らすです。しかしこれはVBにもともとついている機能では実装できません。なぜならばVBには音楽を鳴らす命令が用意されていないからです。そこでその命令を使用可能にするためAPIというものをつかいます。APIの正式名称は、「Application
Program Interface」 (アプリケーション プログラム インターフェイス)です。これはWindowsそのものに用意されている命令を使い、なにかを動作させることです。この命令をを呼び出しプログラムすることまた、命令そのものををAPIと読んでいます。ではまずAPIを使うという宣言をしなければいけません。 |
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
3-8.実装しなければいけない機能3を実装する |
||||||||||||||||
次の機能は文字をクリックすることでメーラーを起動するです。これはすなわち「ラベルをクリックしたとき」なので |
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
図17 |
図18(左がvbNormalFocus,右がvbNormalNoFocus) |
|||||||||||||||
|
|
|||||||||||||||
これで3個目の機能も実装されました。 |
||||||||||||||||
3-9.実装しなければいけない機能4を実装する |
||||||||||||||||
次の機能はボタンをクリックすることで開くダイアログを表示するものです。これには再び新たな部品の追加をしなければなりません。3-3の一番初めで述べた方法でコンポーネントダイアログを表示させ、そこからMicroSoft Common Dialog Contorl 6.0 を選択します。(図19)するとこのようなマークがツールボックスに追加されます。これがコモンダイアログコントロールと呼ばれる部品です。これにより図20のようないろいろな種類のダイアログが表示可能になります。具体的なコード方法は下のとおりです。 |
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
図19 |
図20(いろいろな種類のダイアログ) |
|||||||||||||||
|
|
|||||||||||||||
|
||||||||||||||||
「一定周期で自動でメールをチェックできるようにする」というので思いつくのが一番最初に貼り付けたTimerです。この部品はこのときのために貼り付けたものです。TimerのIntervalプロパティの値が5000担っているのを確認してダブルクリックしてください。そして次のコードを追加します。 |
||||||||||||||||
|
||||||||||||||||
3-11.手直し |
||||||||||||||||
以上ですべての機能が追加されました。これで完成となりました。がすこし手直しが必要です。それは設定画面が常に表示されたままなので起動時には隠しておくということです。それはForm_Loadの部分にForm1.Hideと記述するだけです。それと同時に設定画面を表示する手段を用意しなければいけません。それはここではメール通知の画像をクリックすると表示するようにしましょう。それはForm_Clickを使いForm1.Showを使います。これで手直しは終了です。 |
||||||||||||||||
図21(Form1の完成図) |
||||||||||||||||
|
||||||||||||||||
図22(フォーム2の完成図) |
||||||||||||||||
|
||||||||||||||||
図23(動作画面) |
||||||||||||||||
|
4.詳しく理解する |
|||||||||||||||||||||||||||||||||||
|
4-0.理解を深める(POP3) |
||||||||||||||||||||||||||||||||||
|
プログラムの作成が終わったところで各機能について詳しく理解していくことにします。 |
||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
|
図24 |
||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
|
送信したメールは一度自分が契約しているサーバーに送られます。そこから相手が契約しているサーバーに送られます。そして相手がそのサーバーからメールを受信します。 また、メールは自分が書いた内容のみで送られるのではなく送信者、送信日時などの情報も含めて送信されます。次はRETR命令で受信したメールの内容です。(一部隠してあります) |
|
|
||||||||||||
|
4-1.理解を深める(API) |
||||||||||||
|
APIの主な内容ついては3-7で説明したとおりですが、ここでは他のAPI関数(命令)について触れてみます。 |
||||||||||||
|
|
||||||||||||
|
|
||||||||||||
|
|
||||||||||||
|
|
||||||||||||
|
図25 |
||||||||||||
|
|
||||||||||||
|
|
||||||||||||
5.まとめ |
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|