VB5/6用のiNetMail 1.0J、そして.NET対応初版のSecure Mail 2.0J、どちらもその当時に担当していたコンシューマーからのメールを受信してシステムに取り込むという要件がある開発プロジェクトで採用しました。やはり、肌感覚として文字化けなどの問題が生じない安心感は、自信をもってリリース日を迎えることができた根拠の一つになっていました。
最新版のSecure iNetSuite 4.0JはWindows 8やVisual Studio 2012に対応していますが、2013/10/17から提供が開始されたVisual Studio 2013や発売が開始されたWindows 8.1については現時点ではまだ対応予定の状態です(注1)。そこで、あえて最新のWindows 8.1とVisual Studio 2013でSecure iNetSuite 4.0Jを構成するコンポーネントの一つであるSecure Mail 4.0Jを使ってみて、実際のところどうなのかを確認してみたいと思います。また、今回はデスクトップアプリとしてサンプルを作成しましたが、MVCデザインパターンでの適用がしやすい非同期モード実装に変わったとのことなので、このあたりも意識してサンプルを作成しています。
2013/11/7にリリースされたService Pack 1で対応されました。
Windowsフォームアプリへの適用例
(※サンプルファイルの「CZ1310Win」に対応)
まずは一番オーソドックスなWindowsフォームアプリにSecure iNetSuite 4.0Jを適用してみましょう。とはいっても、Windowsフォーム画面にSecure Mail 4.0Jのsmtpコンポーネントやpopコンポーネントをドラッグ&ドロップで配置してプロパティを設定し、イベントプロシージャの中でメソッドを呼び出すのでは、少々オーソドックスすぎます。
そこで、popコンポーネントを使ってメール一覧を作成するModel部と、WindowsフォームのView部を別クラスになるような構成をとってみましょう。
プロジェクトの構成
Visual Studio 2013を起動して[ファイル]-[新しいプロジェクト]から[Visual Basic]-[Windows]-[Windowsフォームアプリケーション]を選択してWindowsフォームアプリの新規プロジェクトを作成します。
新規プロジェクトが作成できたら、以下の操作を行い、プロジェクトの初期状態を定義します。
- 「Views」「ViewModels」「Models」の3つのフォルダを作成
- Form1.vbファイルをMainForm.vbファイルにリネームしてからViewsフォルダに移動
- ViewModelsフォルダにMainViewModelクラスを作成
- ModelsフォルダにMailModelクラスを作成
なお、今回のサンプルは、MailModelクラスにpopコンポーネントを使ったメール受信のコードを作成し、MainForm.vbファイルには画面定義を記述します。そしてこの2つの橋渡し用のコードを、MainViewModelに記述するという構成になっています。
Secure Mailの参照追加
Secure Mailコンポーネントを利用するためには、参照設定が必要です。
ソリューションエクスプローラーでプロジェクト名を右クリックして[追加]-[参照]メニューから[参照マネージャー]ダイアログを表示します。次に、[アセンブリ]-[拡張]から「PowerTCP Mail for.NET」を選択して、参照の追加を行います。
ライセンスファイルの追加
グレープシティ社のコンポーネント製品に共通しているのは、開発環境でコンポーネントを使う場合、コンポーネント製品をインストールしてあることに加えて、プロジェクトにライセンスファイルを記述しておく必要がある点です。
ソリューションエクスプローラーでプロジェクト名を右クリックして[追加]-[新しい項目]メニューから[新しい項目の追加]ダイアログを表示します。続いて、[全般]から「テキストファイル」を選択して「licenses.licx」という名前でライセンスファイルをプロジェクトに追加してください。
ライセンスファイルには試用するコンポーネント名を記載しますので、今回は次のような内容になります。
Dart.Mail.Pop, Dart.Mail Dart.Mail.MailMessage, Dart.Mail
余談ですが、参照設定やライセンスファイルの追加は、popコンポーネントをツールボックスからWindowsフォームエディタ上にドラッグ&ドロップして配置すると自動的に行われるため、今回のような手間はありません。ドラッグ&ドロップ方式の方が圧倒的に手軽ではありますが、今回はWindowsフォーム上には見た目の定義以外は極力排除するためにこのような手順をとっています。