2009-10-01 34 views
11

Tôi có báo cáo trong trang jsp và tôi đang viết báo cáo đó ở định dạng PDF. Và tôi muốn gửi tệp PDF dưới dạng E-Mail kèm theo tệp đính kèm nhưng tôi không muốn lưu trữ tệp trong máy hoặc máy chủ cục bộ nhưng tôi muốn gửi email có tệp đính kèm.Gửi E-Mail có tệp đính kèm bằng API JAVA Mail mà không lưu trữ trong máy cục bộ

+0

Bạn có thể gửi email w/tập tin đính kèm, và sau đó xóa địa phương f sau đó? – weiji

Trả lời

0

Bạn phải tự thực hiện javax.activation.DataSource để đọc dữ liệu đính kèm từ bộ nhớ thay vì sử dụng một trong các triển khai được bao gồm (để đọc từ tệp, URL, v.v.). Nếu bạn có báo cáo PDF trong một mảng byte, bạn có thể thực hiện một DataSource trả về mảng byte được bao bọc trong một ByteArrayOutputStream.

5

Nếu bạn sử dụng Spring's JavaMail API, bạn có thể thực hiện việc này khá dễ dàng (hoặc ít nhất, dễ dàng như API JavaMail cho phép, điều này không nhiều). Vì vậy, bạn có thể viết một cái gì đó như thế này:

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)); 
    } 
}); 

Các dữ liệu tập tin đính kèm có thể là bất kỳ trừu tượng Resource Spring, ByteArrayResource chỉ là một trong số họ.

Lưu ý rằng phần này của API Spring tự đứng lên, nó không yêu cầu (nhưng không được hưởng lợi từ) vùng chứa Spring.

Các vấn đề liên quan