我需要使用这个类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);
有什么建议吗?
您应该能够自己从头开始实现等价的类。查看DataSource
接口中方法的javadocs,应该可以清楚地了解需要如何实现它们。
(我会帮你做的,但本周我已经写了足够多无聊的代码:-)
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相同的方式使用它。