1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Erro ao enviar email

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 mail api e multipart email

Alguém consegue me ajudar????

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags email java ou faça a sua própria pergunta.