2012-07-20 158 views
0

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

我有如下使用这个类:

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

什么建议吗?

回答

0

你应该能够从头开始自己实现一个等效的类。查看DataSource界面中方法的javadocs,应该明白你需要如何实现它们。

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

+0

它的工作!我在一对网上找到了源代码,所以我只需要复制并粘贴它......我必须实现一对类,但幸运的是没有更多的依赖关系。 – dragonalvaro 2012-07-20 10:45:33

0

斯蒂芬是正确的,你只需要实现一个自定义数据源这样的:

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一样使用它。