- 2.1. HTMLメールを送る
- 2.2. 画像ファイルを送る
- 2.3. メールにファイルを添付する
2.2. 画像ファイルを送る
テキストだけでなく画像ファイルも送る事ができます。画像ファイルの送信については、少し JavaBeans Activation Framework の知識が必要ですので、それについて説明します。JavaBeans Activation Framework(以降、「JAF」と記述)とは、データのタイプを識別し、そのタイプに関連付けられたコンポーネントを動的に呼び出すためのフレームワークです。例えばデータのタイプが「text/html」であると識別され、そのデータを表示する指示を出したならば、「text/html」を表示するためのコンポーネントを呼び出されます。JAF を使用する事によって、複数のデータタイプのサポートが楽になります。MIME メールの送信においては、データタイプの識別に JAF を利用しています。
画像ファイルを送りたい場合には、setContent メソッドではなく、「setDataHandler」メソッドと「javax.activation.DataHandler」クラスを使用します。以下のようにします。
MimeMessage mimeMessage=new MimeMessage(session); ... DataSource dataSource=new FileDataSource("sample.jpeg"); // 送る画像ファイルを指定 DataHandler dataHandler=new DataHandler(dataSource); // DataHandlerの作成 mimeMessage.setDataHandler(dataHandler); // メールに設定
「DataSource」「FileDataSource」も「javax.activation」パッケージのクラスです。FileDataSource の引数には読み込みたいファイルのパスを直接指定するか、java.io.File を用いて指定します。例では直接指定しています。
続いて、FileDataSource を用いて DataHandler を作成します。データタイプの識別などは、DataHandler が行います。最後に setDataHandler メソッドを用いて、メールに設定します。これによって画像ファイルをメールで送る事ができます。
なお FileDataSource の代わりに、「javax.activation.URLDataSource」を使用すれば、インターネットからダウンロードした画像ファイルをメールで送る事ができます。また送る画像ファイルのファイル名を指定したい場合には、MimeMessage の「setFileName」メソッドを使用します。
(実習課題2)
以下のコンソールアプリケーションを作成しなさい。
- 指定したアドレスに対して、画像ファイルをメール送信する。
- 宛先アドレスは1つ目のプログラム引数で指定する。
- 画像ファイルは2つ目のプログラム引数で、URLの形式で指定する。
- ファイル名は3つ目のプログラム引数で指定する。