Javaアプリケーション編 |
|
さまざまなWebアプリケーションを構築していると、メールと連携した仕掛けが欲しいというケースが出てくると思います。例えば、ECアプリケーションであれば、注文処理を行ったタイミングで商品提供者には注文があった旨を通知することで、定期的にサイトやデータベースを確認しなくても済むようになります。顧客には受注確認通知を送信すれば、注文時にいちいちWebの画面をコピーする必要もなくなります。はたまた、新規商品が追加されたタイミングで、新着情報を希望者にニュース配信するというようなケースもあるかもしれません。
いわゆる「プル型(自分で情報を収集する)」であるブラウザ・アプリケーションと、「プッシュ型(情報提供者が積極的に情報を配信する)」であるメール・アプリケーションとをうまく連携させることで、よりユーザ・フレンドリーであり、サイト管理者にとっても有益な仕組みを提供することができるのです。
本稿では、このようなメール・アプリケーションを簡単に構築するためのライブラリ――JavaMailを紹介します。JavaMailを利用することで、SMTP(Simple Mail Transfer Protocol)のような低レベルな通信の手続きをまったく意識することなく、ただ必要なパラメータを与えるだけで、メール送信を実現することができます。
ここでは、まず固定的なテキストをメール送信してみますが、もちろん、パラメータを編集すれば、ユーザーが入力した内容やデータベースから取得したデータを基に、動的に送信先や本文を編集するようなこともできるでしょう。
それでは早速、具体的なコードを眺めてみることにしましょう。
■解説
(1)JavaMailライブラリをインストールする
JavaMailライブラリを利用するには、JavaMailそのものに加えて、JAF(Java Activation Framework)をインストールする必要があります。JavaMail/JAFは、以下のサイトからダウンロードすることが可能です。
- http://java.sun.com/products/javamail/
(JavaMail)
- http://java.sun.com/products/javabeans/glasgow/jaf.html
(JAF)
ダウンロードしたjavamail-X.X.zip、jafX_X_X.zip(X.X、X_X_Xはバージョン番号)を解凍し、展開されたフォルダ内にあるmail.jar、activation.jarに対してクラスパスを設定します。
(2)Javaアプリケーションを作成する
環境の準備が整ったところで、メールを送信するためのJavaアプリケーションを定義してみましょう。
MailTransfer.java |
package to.msn.wings.javatips; |
本サンプルを実行することで、webmaster@wings.msn.toあてに「メールテスト」という件名のメールが送信されるはずです。実際にサンプルコードを動作するに際しては、環境に応じて、該当するヘッダ情報や本文(赤字部分)を変更するようにしてください。また、本TIPSでは、本文、件名などをハードコーディングしていますが、もちろん、ユーザーによる入力やテンプレートなどを利用して、これらを動的に生成することも可能でしょう。
■JavaMailを利用する場合の注意点
最後にJavaMailでメール送信を行う場合の注意点をいくつか挙げておきます。
(1)日本語はISO-2022-JP(JIS)にエンコード
メール本文やサブジェクトなどに日本語を含む可能性がある場合には、あらかじめISO-2022-JP(JIS)にエンコードする必要があります。さもないと、受信したメーラ側で文字化けの原因となります。
(2)mail.smtp.host、mail.hostプロパティは双方指定
mail.smtp.hostプロパティはmail.hostプロパティに優先して認識されるため、2つの値が同一ならば、mail.smtp.hostプロパティを設定するだけでもメール送信は可能です。しかし、mail.hostプロパティは内部的にMessage-IDヘッダを生成するのに利用されます。mail.hostプロパティを明示的に指定していない場合、Message-IDヘッダが正しく生成できない可能性があります。
「Java TIPS」 |
- NetBeansとGlassFishの連携&VBライクなSwing開発 (2008/2/18)
開発現場におけるIDEといえばEclipseが有名だがNetBeansの最新版も便利な機能が多く注目だ。その一部を解説しよう - キャリアとプロファイルを覚えて「Hello Javaアプリ!」 (2008/2/12)
携帯電話のキャリアによってJavaアプリ開発用プロファイルが違うことをしっかり理解し、簡単なプログラムを作ってみましょう - これはすごい!? コード品質のカイゼン化プラグイン2種 (2008/2/6)
JUnitをベースとしたテストケースを自動生成するJUnit Factoryと、コードの保守性(どれくらい読みにくいか)を数値で計れるCrap4jを紹介 - Java、.NET、Ajax開発の“銀の弾丸”オープンソース? (2008/2/1)
先日オープンソース化されたNTTデータの社内フレームワーク/開発プロセスの概要や使い方などをいち早く解説
|
|
スポンサーからのお知らせ
- - PR -
【連載5】今度はBIで在庫の適正化? “いぶき”の指導で、店長たちは大喜び New! |
【x86サーバアンケート結果:後編】 読者からのお悩みにお答えします!! New! |
MyEclipseでスムーズな商品検索を実現! Ajaxでリアルタイムな検索機能を作ろう |
【SOA導入事例】基幹システムを再構築 運用コスト半減と業務のリアルタイム連携 |
守りと攻めで、自分の身を守れ! 【メールセキュリティ特集 2008】 |
アナタのサーバへの悩み、解決します! 「x86サーバ なるほど相談室」ここに開設 |
@ITがメールセキュリティセミナーを開催 J-SOX適用前に、もう一度見直そう!! |
「なぜ会社は変われないのか」の著者 柴田氏も登場。2/28は内部統制イベント! |
お勧め求人情報
**先週の人気講座ランキング**
Java編〜
◆ | New! 顧客企業に切られた―― そのときどうする? 【実録】これがITコンサルタントの仕事だ! |
◆ | New! 「iPhoneプレゼント」――と思ったら!? 脅威は、電子メールだけじゃない! |
◆ | New! 「会議で何かあったんですか?」番次郎と “いぶき”に訪れた、さらなるBI奮闘記! |
◆ | 文書を“コントロールする”という新発想 SaaSでできる 手軽な電子文書対策 |
◆ | 2010年、エネルギーコストはどう変化する 企業が“グリーンIT”を軽視できない理由 |
◆ | こう書けば、職務経歴書はパワフルになる プロが伝授する、書類と面接 完璧攻略法 |
◆ | MyEclipseでスムーズな商品検索を実現! Ajaxでリアルタイムな検索機能を作ろう |
◆ | 「あきらめ」は「気づき」のチャンス よみがえれ 日本企業の誇る“現場の強さ” |
◆ | マイクソロフトが投入するハイブリッド型 CRMで、エンドユーザーに「選択の自由」を |
◆ | CO2削減宣言??環境対策へ進化する サーバと管理ソフトウェアとは |
◆ | 【SOA導入事例】基幹システム再構築 業務のリアルタイム連携で競争力を強化 |
◆ | これから伸びるコンサルタント分野は何か? 〜エンジニア・キャリア進化論(第3回)〜 |
◆ | x86サーバなるほど相談室 開設! その悩み、ペディアくんがお答えします。 |
◆ | SPECjbb2005にて驚異的な実行速度! このベンチマークテスト結果を見よ! |
◆ | 開発で重要な要件定義は、転職でも同じ プロが教える、転職活動の要件定義とは |