2009-10-01 17 views
11

私はjspのページにレポートを持っており、そのレポートをPDF形式で書いています。 PDFを添付ファイル付きの電子メールとして送信したいのですが、ファイルをローカルマシンやサーバーに保存したくないのですが、添付ファイル付きの電子メールを送信したいと思います。ローカルマシンに保存せずにJAVA Mail APIを使用して添付ファイル付きのEメールを送信する

+0

添付ファイル付きの電子メールを送信し、ローカルfを削除できますか?後で? – weiji

答えて

0

javax.activation.DataSourceの独自の実装を書いて、インクルードされた実装の1つ(ファイル、URLなどからの読み込み)を使用する代わりに、添付ファイルのデータをメモリから読み込む必要があります。 PDFレポートをバイト配列に格納している場合は、ByteArrayOutputStreamにラップされたバイト配列を返すDataSourceを実装できます。

5

あなたがSpring's JavaMail APIを使用する場合は、比較的簡単にこの種のものを行うことができます(あるいは、少なくとも、同じように簡単にJavaMail APIとしてあまりされていない、ことができます)。ですから、このような何かを書くことができ:

JavaMailSenderImpl mailSender = ... instantiate and configure JavaMailSenderImpl here 
final byte[] data = .... this holds my PDF data 

mailSender.send(new MimeMessagePreparator() { 
    public void prepare(MimeMessage mimeMessage) throws Exception { 
     MimeMessageHelper helper = new MimeMessageHelper(mimeMessage); 
    // set from, to, subject using helper 
    helper.addAttachment("my.pdf", new ByteArrayResource(data)); 
    } 
}); 

添付データは、Springのリソース抽象化のいずれかにすることができ、ByteArrayResourceはちょうどそれらの一つです。春のAPIのこの部分は、それ自身の上に立つ、それは必要ありません(ただし、恩恵を受けない)Springコンテナこと

注意。

関連する問題