Pessoal é o seguinte, há pouco tempo eu estou usando uma classe para enviar emails com anexos, um deles é pdf e o outro é xls(era pegado direto do disco ); porém agora tento passar ele da memória e no fim o anexo xls fica corrompido. Segue meus códigos:
[code]
public class MailAnexo {
public void enviarEmail(byte[] bytesOrcamento, byte[] bytesPlanilha, String para) throws Exception {
String de = "*****@gmail.com";
String assunto = "Email de Orcamento";
para = "*****@hotmail.com";
String texto = "Segue em anexo o orcamento e a planilha em excel.";
try {
Properties props = System.getProperties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "465");
props.put("mail.smtp.user", "*****@gmail.com");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.debug", "true");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
Session sessao = Session.getInstance(props,null);
MimeMessage m = new MimeMessage(sessao);
m.setFrom(new InternetAddress(de));
Address[] to = new InternetAddress[] {new InternetAddress(para)};
m.setRecipients(Message.RecipientType.TO, to);
m.setSubject(assunto);
m.setSentDate(new java.util.Date());
m.setText(texto);
Multipart corpo = new MimeMultipart();
InternetHeaders headers = new InternetHeaders();
headers.addHeader("Content-Type", "application/pdf");
MimeBodyPart partPhoto = new MimeBodyPart();
partPhoto.setDataHandler(new DataHandler(new ByteArrayDataSource(bytesOrcamento, "application/pdf")));
partPhoto.setFileName("Orcamento.pdf");
MimeBodyPart partPhoto2 = new MimeBodyPart();
partPhoto2.setDataHandler(new DataHandler(new ByteArrayDataSource(bytesOrcamento, "application/vnd.ms-excel")));
partPhoto2.setFileName("Planilha_Autorizacao.xls");
corpo.addBodyPart(partPhoto);
corpo.addBodyPart(partPhoto2);
m.setContent(corpo);
Transport transport = sessao.getTransport("smtp");
transport.connect(de, "*******");
transport.sendMessage(m, m.getAllRecipients());
transport.close();
} catch (Exception ex) {
throw new Exception(ex.getMessage());
}
}
} [/code]
e esse é a parte onde é chamado, lembrando que o “wb” é do tipo HSSFWorkbook da POI e tá funcionando perfeitamente:
...
MailAnexo email = new MailAnexo();
try {
email.enviarEmail(conteudoRelatorio,wb.getBytes(), orcamento.getRazaoSocial().getEmail());
} catch (Exception e) {
e.printStackTrace();
}
...
alguem sabe o motivo do xls estar vindo corrompido?