- PR -

メールの添付ファイルについて

1
投稿者投稿内容
okr
会議室デビュー日: 2008/01/10
投稿数: 7
投稿日時: 2009-01-07 17:35
いつもお世話になっております。

Javaのメール機能を使用して、プログラム内にて作成したファイルをメールに添付したいのですが、現在FileWriterクラスにて添付ファイルを作成しているため物理的にファイルが出来てしまいます。
物理的にファイルを作らずにメールに添付するファイルを作成する方法はありますか?


以下、現在のプログラムソースです。

----------------------------------------------------------------------

FileWriter write = new FileWriter("aaa.txt");
write.write("aaaaaaaaaaaaaaaaaaaaaaaaa");
write.close();

MimeBodyPart mbp = new MimeBodyPart();
mbp.setDataHandler(new DataHandler(new FileDataSource("aaa.txt")));
mbp.setFileName("bbb.txt");

Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp);
mimeMessage.setContent(mp);

----------------------------------------------------------------------

宜しくお願い致します。
sawat
大ベテラン
会議室デビュー日: 2006/08/02
投稿数: 112
投稿日時: 2009-01-07 19:22
DataHandlerに渡すDataSourceを自分で実装すれば可能です。
DataSourceのgetInputStreamメソッドから添付させたいデータを
出力するストリームを返します。
okr
会議室デビュー日: 2008/01/10
投稿数: 7
投稿日時: 2009-01-08 18:09
sawatさん、回答ありがとうございます。

DataSourceクラスを実装したクラスを作成し、そのgetInputStreamメソッドにInputStreamを生成して返す処理を加えて、それをDataHandlerに渡すようにしたら出来ました。
本当にありがとうございました。

以下、作成したプログラムソースです。

----------------------------------------------------------------------


/* 処理部分 */
MimeBodyPart mbp = new MimeBodyPart();
mbp.setDataHandler(new DataHandler(new DataSource2("aaaaaaa")));
mbp.setFileName("bbb.txt");

========================================================

/* DataSource実装クラス */

public class DataSource2 implements DataSource {

private String str;

public DataSource2(String str){
this.str = str;
}

public String getContentType() {
return "text/plain";
}

public InputStream getInputStream() throws IOException {

ByteArrayInputStream input = new ByteArrayInputStream(this.str.getBytes());
return input;
}

public String getName() {
return null;
}

public OutputStream getOutputStream() throws IOException {
return null;
}
}

----------------------------------------------------------------------
1

スキルアップ/キャリアアップ(JOB@IT)