2012-07-20 59 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一樣使用它。