目次へ

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つ目のプログラム引数で指定する。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp