Try e catch com JavaMail

4 respostas
I

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á.

4 Respostas

D

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

LPJava

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

pedroroxd

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)²

I

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.

Criado 27 de janeiro de 2010
Ultima resposta 2 de abr. de 2010
Respostas 4
Participantes 4