JavaMail e vários anexos [Resolvido]

2 respostas
L

Olá, guj!

[color=red]Como eu faço para enviar vários anexos em um único e-mail usando JavaMail?[/color]

Já pesquisei no Google, aqui no GUJ, em outros foruns e nada exatamente para o que preciso... Tenho uma classe para enviar o e-mail, que está funcionando perfeitamente, porém quando eu anexo mais de um arquivo ele se repete... Por exemplo: Se eu enviar um e-mail e anexar 3 arquivos diferentes, o destinatário recebe o e-mail com 3 anexos iguais, sempre repetindo o último arquivo anexado... Segue o que estou fazendo...
try {
                msg.setRecipient(Message.RecipientType.TO, new InternetAddress(destinatario));
                msg.setFrom(new InternetAddress(remetente));
                msg.setSubject(assunto);
                msg.setSentDate(new Date());
            }
            catch (Exception e) {
                e.printStackTrace();
            }
            try {
                bodyPartGeral.setContent(multipartAlternative);  
                multipartMixed.addBodyPart(bodyPartGeral);
                bodyPartMensagem.setContent(mensagem, "text/html");
                multipartAlternative.addBodyPart(bodyPartMensagem);

                for (int i = 0; i < quantAnexos; i++) {
                    String nomeAnexo = "";
                    //retira o nome do arquivo do caminho no disco...
                    int i2 = caminhoAnexo[i].length();
                    boolean continuar = true;
                    while (continuar == true) {
                        if ((caminhoAnexo[i].substring(i2-1, i2)).equals("/")) continuar = false;
                        else nomeAnexo = caminhoAnexo[i].substring(i2-1, caminhoAnexo[i].length());
                        i2--;
                    }
                    // adiciona o anexo ao MimeBodyPart...
                    fds = new FileDataSource(caminhoAnexo[i]);
                    bodyPartAnexo.setDataHandler(new DataHandler(fds));
                    bodyPartAnexo.setFileName(nomeAnexo);
                    multipartMixed.addBodyPart(bodyPartAnexo);
                }
                msg.setContent(multipartMixed);
                tr = session.getTransport("smtp");
                tr.connect(mailSMTPServer, remetente, senha);
                msg.saveChanges();
                tr.sendMessage(msg, msg.getAllRecipients());
                tr.close();
Lembrando que os caminhos dos arquivos são armazenados no array destinatarios[] e que estão gravados corretamente, como mostra a saída com System.out.println(destinatario[i]), justamente por poder anexar uma quantidade inestimada de arquivos...

Alguém consegue me ajudar:?:
Valeu!!!

2 Respostas

L

Opa…
Nem deixei vocês me ajudarem e já consegui o que eu precisava!!!
Foi só quebrar a cabeça um pouco mais pra descobrir que estava repassando sempre o último objeto que continha o último anexo…
Para não deixar a expectativa e para ajudar a melhorar as dicas sobre esse assunto, segue exatamente como ficou os attachments…

bodyPartGeral.setContent(multipartAlternative); multipartMixed.addBodyPart(bodyPartGeral); bodyPartMensagem.setContent(mensagem, "text/html"); multipartAlternative.addBodyPart(bodyPartMensagem); for (int o = 0; o < quantAnexos; o++) { File file = new File(caminhoAnexo[o]); MimeBodyPart bodyPartAnexo = new MimeBodyPart(); bodyPartAnexo.setDataHandler(new DataHandler(new FileDataSource(file))); bodyPartAnexo.setFileName(file.getName()); multipartMixed.addBodyPart(bodyPartAnexo); } msg.setContent(multipartMixed); msg.saveChanges(); tr = session.getTransport("smtp"); tr.connect(mailSMTPServer, remetente, senha); tr.sendMessage(msg, msg.getAllRecipients()); tr.close();
E pronto! Funcionou perfeitamente!

D

Cara, tava copiando ae teu codigo para ver se funcionava…

Mas seguinte… passa os contrutores de:

bodyPartGeral.setContent(multipartAlternative); multipartMixed.addBodyPart(bodyPartGeral); bodyPartMensagem.setContent(mensagem, "text/html"); multipartAlternative.addBodyPart(bodyPartMensagem);

Se puder fazer o favor neh… enquanto isso vou tentar arrumar aqui…
VALEU!!!

Criado 4 de setembro de 2008
Ultima resposta 30 de abr. de 2009
Respostas 2
Participantes 2