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

ゼロから同等のクラスを自分で実装できるはずです。インターフェース内のメソッドの javadoc を見てくださいDataSource。それらをどのように実装する必要があるかは明らかです。

(私はあなたのためにそれをしたいと思いますが、今週のために十分な退屈なコードを書きました:-) )

于 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 に答える