.NET Frameworkにおける日本語メールの問題点
.NET Frameworkは、帳票系が弱いなど機能面で日本の実情や文化にうまくマッチしていない部分はありますが、基本的には日本語もうまく扱え、海外生まれの実行環境だという違和感を感じる場面に出くわすことは少ないと思います。
しかし、メールの送受信に関しては別です。.NET Frameworkの一部であるSystem.Net.Mailも日本語化されており、テスト実施時にも問題が発見されることはあまりないのですが、いざ実運用を開始すると、
「メールを受け取った弊社のお客様から『文字化けしている』という連絡が入っているのだけれど、どういうことでしょうか。説明をお願いします」
といったようなクレームが、納品先から入る事例があるようです。これは、受信側のメールクライアントソフトに問題があることも多いのですが、インターネットにおける国際標準「RFC(Request for Comments)」の日本における実装のデファクトスタンダードに、System.Net.Mailが対応しきれていないのが原因です。
RFCに準拠していないからと片付けてしまうのは簡単ですが、多くのメールクライアントソフトでは、RFCに準拠していないメールでも拒否せずに処理を行います。この点を考えると、納品先のお客様が本当の意味で納得するに至らないケースもあるでしょう。
先ほど、「クレームが納品先から入る事例があるようです」と実体験ではないような書き方をしましたが、私はメール関連のアプリケーションを開発する場合、.NET Frameworkの標準機能ではなく、グレープシティなど、必ず日本のベンダーから発売されている市販のコンポーネントを使っています。そのおかげか、クレームになるようなメール関連のトラブルを体験したことがないのです。
そこで今回は、意図的にトラブルが発生するようなデータを使って、System.Net.Mailとグレープシティのメール送受信コンポーネント「Secure Mail 2.0J」を比較してみたいと思います。
Secure Mail 2.0Jを使う前準備
Visual StudioのプロジェクトでSecure Mailを使うには、インストール後、Secure Mailのコンポーネントの参照設定が必要です。参照設定を行うには、次の2つの方法があります。
- Dart.PowerTCP.SecureMailコントロールをツールボックスに追加(図1)して、Windowsフォームなどにドラッグ&ドロップする
- Dart.PowerTCP.SecureMail.dllを参照設定する
(2)の方法で参照設定を行った場合は、Visual Studioプロジェクトへのライセンスファイルの追加が自動的に行われません。リスト1の内容を記述した「licenses.licx」というファイルを作成し、[新しい項目の追加]から追加しましょう。
Dart.PowerTCP.SecureMail.Smtp, Dart.PowerTCP.SecureMail