Try e catch com JavaMail

Uso a API JavaMail para enviar emails, e na hora de usar o comando:

    Transport.send(message);

ele retorna um erro caso o endereço seja inválido, mesmo sendo tratado com try e catch ele pára de enviar, como faço para que ele continue enviando a listagem até o fim, mesmo com algum e-mail dando erro?

Agradeço desde já.

Amigo, talvez vc tenha que chamar algum método dentro do catch.

Não sei ao certo, mas acredito que possa ser uma solução

se ele postasse o codigo com a excecao ja ajudava :slight_smile:

Queria aprender a usar essa API… (posta o código please) =D
E pro povo te ajudar, vc tem que postar o código para ver onde tá o erro (posta o código please)²

Bom galera, como vocês desenterraram o tópico vou responder e postar o código, passou tanto tempo que consegui resolver o problema, mas acabei esquecendo de avisar aqui, o que estava ocorrendo era o seguinte:

Preciso enviar vários e-mails, mas na api javamail na hora de enviar um e-mail se der erro ele dispara uma excessão, até aí tudo bem, o problema mesmo estava por que eu queria que ele continuasse enviando, mesmo com o erro, a solução foi fazer um loop (while) e colocar o try e catch dentro deste loop, quando der a exception ele apenas exibe uma mensagem e mais nada, vou postar o código abaixo, mas não dá para entender o funcionamento da javamail só pelo código, se alguém precisar de mais alguma informação pode perguntar que respondo, segue o código:



try{

                        ///Comeco do envio de html
                        Autenticador autentica = new Autenticador();
                        Session sessaoHtml = Session.getInstance(props, autentica);
                        sessaoHtml.setDebug(true);
                        Message message = new MimeMessage(sessaoHtml);
                        // Estipula quem esta enviando
                        message.setFrom(new InternetAddress(from));
                        message.setSubject(subject);
                        MimeMultipart mpRoot = new MimeMultipart("mixed");
                        MimeMultipart mpContent = new MimeMultipart("alternative");
                        MimeBodyPart contentPartRoot = new MimeBodyPart();

                        //enviando texto
                        MimeBodyPart mbp1 = new MimeBodyPart();
                        mbp1.setText("Inscrição no processo seletivo FCE.");
                        mpContent.addBodyPart(mbp1);

                        //enviando html
                        MimeBodyPart mbp2 = new MimeBodyPart();

                       int k = 0;
                       int conta = 0;
                       
                       
                       
                       while(k < fim){

                                
                                ///Para pegar cliques de quem ler a mensagem
                                int tagBody = mensagemHtml.indexOf("/body");
                                String wcampanha = Form.jTextField9.getText();
                                String tagPegaEmail = "<p> <img src='http://www.ipca.br/Funcoes.jsp?email="+listadeNomes[k]+"&nomedacampanha="+wcampanha+"'" + "    /> </p>";
                                String novamensagemHtml = mensagemHtml.substring(0,tagBody-1) + tagPegaEmail + mensagemHtml.substring(tagBody-1, mensagemHtml.length());
                                tagPegaEmail="";
                                mbp2.setContent(novamensagemHtml,"text/html");
                                contentPartRoot.setContent(mpContent);
                                mpRoot.addBodyPart(contentPartRoot);
                                mpContent.addBodyPart(mbp2);
                                message.setContent(mpRoot);
                                
                                    try{

                                        message.addRecipient(Message.RecipientType.TO, para[k]);

                                    }catch(AddressException qq){
                                        System.out.println("Deu erro");
                                    }

                                message.saveChanges();
                                int diaAtual, mesAtual, anoAtual;
                                Date pegaDatadeHoje = new Date();
                                diaAtual = pegaDatadeHoje.getDate();
                                mesAtual = pegaDatadeHoje.getMonth();
                                anoAtual = pegaDatadeHoje.getYear();
                                anoAtual = anoAtual + 1900;
                                mesAtual = mesAtual + 1;
                                String wdataAtual = diaAtual + "/" + mesAtual + "/" + anoAtual;
                                DAO cadastra = new DAO();
                                cadastra.InsereEmails(listadeNomes[k], wdataAtual, wcampanha);

                                ///Aqui dava a exception e estava o problema.
                                Transport.send(message);
                                conta++;
                                String  valor;
                                String somadora = Form.jTextField11.getText();
                                if(contadora > 1){
                                   contadora = Integer.parseInt(somadora);
                                }
                                contadora++;
                                valor = String.valueOf(contadora);
                                Form.jTextField11.setText(valor);
                                Form.jTextField11.setEditable(false);
                                message = new MimeMessage(sessaoHtml);
                                message.setFrom(new InternetAddress(from));
                                message.setSubject(subject);
                                message.setContent(mpRoot);
                                mpRoot.removeBodyPart(contentPartRoot);
                                indiceDoErro = k;
                                k++;
                        }
                                 JOptionPane.showMessageDialog(null, "     Processo Concluído!\n" + " " + k + " emails enviados com sucesso." );

        
                  }catch (Exception ex) {
                   System.out.println("Erro de mensagem. ");
                  }               
    }


É isso aí, o programa pega uma página em HTML, insere uma string no final que se o usuário abre conta como um clique e arquiva no banco de dados.

Qualquer dúvida estamos aí.

Abraços e valeu pela colaboração.