メールアドレスを指定してそこからメールが送られてきたら通知してくれるアプリをつくります。一定時間おきにメールボックスをチェックして新しくメールが来ていた場合、それが指定されていたものであれば通知メッセージを表示させます。

これまでと同様、.NET用メール送受信クラスライブラリ (TKMP.DLL) を使わせていただきます。

.NET用メール送受信クラスライブラリ (TKMP.DLL)

5分おきに自作メソッド GetNewMails()を呼び出してメールボックスを調べ、新しいメールの着信があるかどうかしらべます。

GetMails()メソッドはメールボックスのメールを取得するためのものです。Dataクラスはメールの件名、本文、誰からのものか、着信時刻などを保存するためのものです。メールボックスのメールを取得したらこれをもとにDataオブジェクトをつくり、リストに格納します。

同じメールを何度もチェックしていては時間の無駄なので、一度確認したメールのuidをリストに格納して二回目以降は無視するようにしています。

メールの削除も可能ですが、リスクが大きいのでここではやっていません。

削除するのであればこの方法で削除できます。

以下のコードではうっかりミスで大事なメールを削除してしまわないように、メールの確認だけをおこなっています。

[操作] ⇒ [スタート]をクリックするとメールを取得します。そして取得対象のメールを取得したらリストボックスに表示します。そのあと一定時間おきにメールボックスをチェックして新着メールがあればその内容を取得して表示します。

リストボックスのアイテムが選択されたら必要な情報を表示させます。

メニューで[設定] ⇒ [設定を保存]が選択されたら設定を暗号化して保存します。保存されるのはメールサーバーの情報とメールアカウントのIDとパスワード、取得対象とする送信元のメールアドレスなどです。

メニューで[設定] ⇒ [設定を保存]が選択されたら設定を暗号化して保存します。保存されるのはメールサーバーの情報とメールアカウントのIDとパスワード、取得対象とする送信元のメールアドレスなどです。

取得されたメール自体も保存したり、ファイルから読み出せるようにします。使用しているDocクラスはこのコードの下に示します。

[すべて通知する]にチェックされている場合はテキストボックスをEnabled = falseにします。

[メール] ⇒ [クリア]が選択されたらリストボックスのアイテムを全消去してDatasの要素もクリアします。

Configは設定に関する情報を管理するためのものです。コンストラクタにわたされた文字列を暗号化してフィールド変数に格納します。またGet~メソッドで復号された文字列を返します。

IsPasswordRight(string masterPassword)メソッドはファイルを開くときに入力されたマスターパスワードが正しいかどうかを調べるためのものです。ファイル保存のときに渡されたマスターパスワードのハッシュとIsPasswordRightに渡された文字列のハッシュが一致するかどうかで正しいパスワードかどうかを判定しています。

Dataはコンストラクタの引数が異なるだけで、これまで使ってきたものとほとんど同じです。GetDateTime(string str)メソッドはMon, 19 Oct 2020 19:33:02 +0900のような文字列をDateTime型に変換するためのものですが、Mon, 19 Oct 2020 19:33:02 +0900 (JST)となっていたり、Mon, 19 Oct 2020 19:33:02 +0900 (JST)と半角スペースが余分に入っているとうまく機能しないので改良を加えています。