Messageクラスへのセット

広告

マルチパート部分が出来ましたら、それをMessageクラスのオブジェクトへセットする必要があります。添付ファイルが無く、本文だけだった場合は下記のように行っていました。

MimeMessage msg = new MimeMessage(session);

msg.setText(msgText, "ISO-2022-JP");

上記のように"setText"メソッドで、本文を直接セットしていましたが、マルチパートをセットする場合は"setContent"メソッドを使います。

This method sets the Message's content to a Multipart object.

Parameters:
  mp - The multipart object that is the Message's content
Throws:
  IllegalWriteException - if the underlying implementation does not 
    support modification of existing values
  IllegalStateException - if this message is obtained from a READ_ONLY 
    folder.
  MessagingException -  

よって、具体的な記述は下記のようになります。

try {
  MimeMessage msg = new MimeMessage(session);

  String filename = "c:¥¥temp¥¥filename.abc";

  MimeBodyPart mbp = new MimeBodyPart();

  FileDataSource fds = new FileDataSource(filename);
  mbp.setDataHandler(new DataHandler(fds));
  mbp.setFileName(fds.getName());

  msg.setContent(mp);
} catch (MessagingException mex) {
  mex.printStackTrace();
}

以上でテキストや添付ファイルをマルチパートにセットする方法が分かりましたので、次のページではサンプルプログラムで実際に送信するところまでを見てみます。

( Written by Tatsuo Ikura )