Olá galera estou com um problema na API JavaMail que não consigo resolver…
Qdo anexo um pdf ele volta assim…
[code]------=_Part_10_32628960.1251038363795
Content-Type: text/plain; name=anexo.pdf
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=anexo.pdf
JVBERi0xLjQKJeLjz9MKMyAwIG9iaiA8PC9UeXBlL1hPYmplY3QvQ29sb3JTcGFjZS9EZXZpY2VS
R0IvU3VidHlwZS9JbWFnZS9CaXRzUGVyQ29tcG9uZW50IDgvV2lkdGggMTcyL0xlbmd0aCA0MTk3
L0hlaWdodCA4NS9GaWx0ZXIvRENURGVjb2RlPj5zdHJlYW0K/9j/4AAQSkZJRgABAQEBLAEsAAD/
2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0
Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCABVAKwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA
AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJx
FDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNk
ZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJ[/code]
Tenho a inplementacao do DataSource
[code]public class InputStreamDataSource implements DataSource {
private String name;
private String contentType;
private ByteArrayOutputStream baos;
public InputStreamDataSource(String name, String contentType,
InputStream inputStream) throws IOException {
int read;
this.name = name;
this.contentType = contentType;
baos = new ByteArrayOutputStream();
byte[] buff = new byte[256];
while ((read = inputStream.read(buff)) != -1) {
baos.write(buff, 0, read);
}
}
public String getContentType() {
System.out.println("ContentType->>>" + contentType);
return contentType;
}
public InputStream getInputStream() throws IOException {
// TODO Auto-generated method stub
return new ByteArrayInputStream(baos.toByteArray());
}
public String getName() {
// TODO Auto-generated method stub
return name;
}
public OutputStream getOutputStream() throws IOException {
// TODO Auto-generated method stub
throw new IOException("Cannot write to this read-only resource");
}
}
[/code]
Pego os bytes[] do pdf
[code] ByteArrayInputStream attachStream = new ByteArrayInputStream(bts);
//call constructor class:InputStreamDataSource
e esse é o metodo para envio
[code]protected void sendMail(InputStreamDataSource attach, Usuario usuario, Fornecedor fornecedor) throws IOException {
Session session = Session.getInstance(props, new MailAuthenticator(usuario.getUsuario(), usuario.getEmailSenha()));
try {
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(usuario.getEmail()));
InternetAddress[] address = {new InternetAddress(fornecedor.getEmail())};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject("Assunto teste.");
MimeBodyPart bp1 = new MimeBodyPart();
bp1.setText("Texto teste.");
MimeBodyPart bp2 = new MimeBodyPart();
bp2.setDataHandler(new DataHandler(attach));
bp2.setFileName(attach.getName());
Multipart mp = new MimeMultipart();
mp.addBodyPart(bp2);
mp.addBodyPart(bp1);
msg.setContent(mp);
msg.setSentDate(new Date());
Transport.send(msg);
System.out.println("Email enviado com sucesso !");
} catch (MessagingException mex) {
mex.printStackTrace();
Exception ex = null;
if ((ex = mex.getNextException()) != null) {
ex.printStackTrace();
}
}
}[/code]
Se alguem puder me ajudar, desde já agredeço…
InputStreamDataSource isds = new InputStreamDataSource(“anexo.pdf”, “application/pdf”, attachStream);[/code]