0

我需要使用此类 ByteArrayDataSource 发送带有附件的电子邮件(使用 iText 创建的 pdf),但我们的环境在 java 1.4 上运行,但此类在 Javamail 中需要更高版本。

我必须使用这个类,如下所示:

//now write the PDF content to the output stream   
    outputStream = new ByteArrayOutputStream();
    pdfCreator.createPdf(data,outputStream);
    byte[] bytes = outputStream.toByteArray();


    //construct the pdf body part
    DataSource dataSource = **new ByteArrayDataSource**(bytes, "application/pdf");
    MimeBodyPart pdfBodyPart = new MimeBodyPart();
    pdfBodyPart.setDataHandler(new DataHandler(dataSource));
    pdfBodyPart.setFileName("listadosCitaciones.pdf");

    multipart.addBodyPart(messageBodyPart);

有什么建议吗?

4

2 回答 2

0

您应该能够从头开始自己实现一个等效的类。查看DataSource接口中方法的 javadocs,应该很明显需要如何实现它们。

(我会为你做,但我已经为这周写了足够多无聊的代码:-))

于 2012-07-20T09:48:16.953 回答
0

Stephen 是对的,您只需要像这样实现一个自定义数据源:

public class ByteArrayDataSource implements DataSource {
    public ByteArrayDataSource(byte[] b, String ct) {
        bytes = b;
        contentType = ct;
    }

    public String getContentType() {
        return contentType;
    }

    public InputStream getInputStream() throws IOException {
        return new ByteArrayInputStream(bytes);
    }

    public String getName() {
        return null;
    }

    public OutputStream getOutputStream() {
        throw new UnsupportedOperationException();
    }

    private byte[] bytes;
    private String contentType;
}

然后你可以像 jdk1.5 ByteArrayDataSource 一样使用它。

于 2012-07-20T10:29:28.027 回答