さまざまなWebアプリケーションを構築していると、メールと連携した仕掛けが欲しいというケースが出てくると思います。例えば、ECアプリケーションであれば、注文処理を行ったタイミングで商品提供者には注文があった旨を通知することで、定期的にサイトやデータベースを確認しなくても済むようになります。顧客には受注確認通知を送信すれば、注文時にいちいちWebの画面をコピーする必要もなくなります。はたまた、新規商品が追加されたタイミングで、新着情報を希望者にニュース配信するというようなケースもあるかもしれません。
いわゆる「プル型(自分で情報を収集する)」であるブラウザ・アプリケーションと、「プッシュ型(情報提供者が積極的に情報を配信する)」であるメール・アプリケーションとをうまく連携させることで、よりユーザ・フレンドリーであり、サイト管理者にとっても有益な仕組みを提供することができるのです。
本稿では、このようなメール・アプリケーションを簡単に構築するためのライブラリ――JavaMailを紹介します。JavaMailを利用することで、SMTP(Simple Mail Transfer Protocol)のような低レベルな通信の手続きをまったく意識することなく、ただ必要なパラメータを与えるだけで、メール送信を実現することができます。
ここでは、まず固定的なテキストをメール送信してみますが、もちろん、パラメータを編集すれば、ユーザーが入力した内容やデータベースから取得したデータを基に、動的に送信先や本文を編集するようなこともできるでしょう。
それでは早速、具体的なコードを眺めてみることにしましょう。
JavaMailライブラリを利用するには、JavaMailそのものに加えて、JAF(Java Activation Framework)をインストールする必要があります。JavaMail/JAFは、以下のサイトからダウンロードすることが可能です。
ダウンロードしたjavamail-X.X.zip、jafX_X_X.zip(X.X、X_X_Xはバージョン番号)を解凍し、展開されたフォルダ内にあるmail.jar、activation.jarに対してクラスパスを設定します。
環境の準備が整ったところで、メールを送信するためのJavaアプリケーションを定義してみましょう。
package to.msn.wings.javatips; |
本サンプルを実行することで、webmaster@wings.msn.toあてに「メールテスト」という件名のメールが送信されるはずです。実際にサンプルコードを動作するに際しては、環境に応じて、該当するヘッダ情報や本文(赤字部分)を変更するようにしてください。また、本TIPSでは、本文、件名などをハードコーディングしていますが、もちろん、ユーザーによる入力やテンプレートなどを利用して、これらを動的に生成することも可能でしょう。
最後にJavaMailでメール送信を行う場合の注意点をいくつか挙げておきます。
メール本文やサブジェクトなどに日本語を含む可能性がある場合には、あらかじめISO-2022-JP(JIS)にエンコードする必要があります。さもないと、受信したメーラ側で文字化けの原因となります。
mail.smtp.hostプロパティはmail.hostプロパティに優先して認識されるため、2つの値が同一ならば、mail.smtp.hostプロパティを設定するだけでもメール送信は可能です。しかし、mail.hostプロパティは内部的にMessage-IDヘッダを生成するのに利用されます。mail.hostプロパティを明示的に指定していない場合、Message-IDヘッダが正しく生成できない可能性があります。
Copyright © ITmedia, Inc. All Rights Reserved.