Boa Tarde,
Estou tentando enviar um e-mail com anexo, porém se eu rodar esse código por dentro do eclipse funciona, envia email com o anexo, perfeito.
Só que minha aplicação executa como um serviço no windows, e sempre que alguém parar o serviço manualmente,essa rotina é chamada deveria enviar o e-mail com o anexo. Porém ocorre o seguinte erro:
javax.mail.MessagingException: IOException while sending message;
nested exception is:
javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed;
boundary="----=_Part_0_26619001.1440023486204"
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1167)
at javax.mail.Transport.send0(Transport.java:254)
at javax.mail.Transport.send(Transport.java:124)
at br.com.backupsafe.generic.framework.utils.EnviarEmail.enviarEmail(EnviarEmail.java:125)
at br.com.backupsafe.exception.TratamentoException.enviarEmailStopBackupSafe(TratamentoException.java:187)
at br.com.backupsafe.main.StopBackupSafe.main(StopBackupSafe.java:10)
Caused by: javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed;
boundary="----=_Part_0_26619001.1440023486204"
at javax.activation.ObjectDataContentHandler.writeTo(Unknown Source)
at javax.activation.DataHandler.writeTo(Unknown Source)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1627)
at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1849)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1119)
... 5 more
O código completo da rotina está abaixo:
public static Boolean enviarEmail(File anexo,String mensagem,String titulo) throws MessagingException, IOException {
Properties props = new Properties();
//** Parâmetros de conexão com servidor Gmail *//*
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication("email", "senha");
}
});
//** Ativa Debug para sessão *//*
//session.setDebug(true);
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("email")); //Remetente
message.setText(StringUtils.normalizar(mensagem));
Address[] toUser = InternetAddress //Destinatário(s)
.parse("email");
message.setRecipients(Message.RecipientType.TO, toUser);
message.setSubject(StringUtils.normalizar(titulo));//Assunto
if(anexo!= null){
// cria a primeira parte da mensagem
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setText(StringUtils.normalizar(mensagem));
// cria a segunda parte da mensage
MimeBodyPart mbp2 = new MimeBodyPart();
mbp2 = new MimeBodyPart();
byte[] arrBytes = Files.readAllBytes(anexo.toPath());
DataSource src = new ByteArrayDataSource(arrBytes, "image/png");
mbp2.setDataHandler(new DataHandler(src));
// cria a Multipart
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);
// adiciona a Multipart na mensagem
message.setContent(mp,"text/plain");
}
// configura a data: cabecalho
message.setSentDate(new Date());
//**Método para enviar a mensagem criada*//*
Transport.send(message);
return true;
} catch (AddressException e) {
throw e;
} catch (javax.mail.MessagingException e) {
throw e;
}
}
Já tentei seguir este tutorial:
http://www.guj.com.br/java/244100-mail-api-e-multpart
Alguém consegue me ajudar???