Javamail dúvida

galera já procurei na net mas ainda não achei nada…

fiz uma aplicação de envio de e-mail com autenticação no servidor(que é necessário), mas como tem vários e-mails, demora muito para enviar os e-mails. Sendo assim fiz um teste sem a autenticação no servidor e funfou bem mais rápido.

A pergunta é: qual é a possibilidade de dar erro no decorrer do tempo?

valew?

Você só precisa se autenticar uma vez por sessão (ou seja, se você vai mandar 15 emails de uma vez, autentique-se no começo, mande os 15 e depois encerre a sessão.)

De qualquer maneira, se seu servidor não está exigindo autenticação, pode ser que ele comece a exigir de uma hora para outra. Se achar melhor, inclua uma opção de configuração no seu sistema que habilite ou desabilite a autenticação.

valew thingol vou fazer isso…

thingol por um acaso tem como vc falar como que eu faço para fechar a conexão.

a eu não mando tudo de uma vez só, eu fiz um laço de repetição(For()) para enviar, eu fiz isso para não aparecer todos os emails e sim só o que é necessário para cada destinatario.

valew thingol.

Thingol tentei fazer o que você falou, mas sei se esta certo tem como você ver pra mim fazendo um grande favor, eu coloquei o codigo e comentei a linha que acrescentei.

Valew…

package br.com.linetec.mail;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;

import br.com.linetec.mail.SMTPAuthenticator;

public class email extends HttpServlet {
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=ISO-8859-1");
        PrintWriter out = response.getWriter();

        String corpo        = null;
        String dataHora     = request.getParameter("campoDataHora");
        String ip           = request.getParameter("campoIp");
        String email        = request.getParameter("campoEmail");
        String texto        = request.getParameter("campoTexto");
        String nome         = request.getParameter("campoName");
        String nome2        = request.getParameter("campoName2");
        String denuncia     = request.getParameter("campoDenuncia");
        String telefone     = request.getParameter("campoTelefone");
        String nomeApelido  = request.getParameter("campoNomeApelido");
//        String email2      = "xx@xx.com.br";
        String email2       = "xx@xx.com.br;";
        //String endereco     = "http://xxxx/x/Arquivos/";
        //String endereco2    = "http://xxxx/x/imagem/";
        String endereco     = "http://xxxx/x/Arquivos/";
        String endereco2    = "http://xxxx/xe/imagem/";
        String host         = "smtp.xxx.com.br";
        String username     = "xx@xxx.com.br";
        String senha        = "xxxxxxxx";

        email2       += request.getParameter("campoDepartamento");

        String[] emails       = email2.split(";");
        String[] nomesArquivo = nome.split(";");
        
        if(email == null || email.equals("")){
            email = "xxx@xx.com.br";
        }

        boolean debug = false;
        
        Properties p = new Properties();
        p.put("mail.smtp.host", host);
        p.put("mail.smtp.port", "25"); 
        p.put("mail.smtp.auth", "true"); 

        //
/*        p.put("mail.debug", "true");
        p.put("mail.smtp.debug", "true");
        p.put("mail.mime.charset", "ISO-8859-1");
        p.put("mail.smtp.starttls.enable", "true");
        p.put("mail.smtp.socketFactory.port", "25");
        p.put("mail.smtp.socketFactory.fallback", "false");*/
        //

        Authenticator auth = new SMTPAuthenticator(username, senha); 
        Session session = Session.getDefaultInstance(p, auth);
//        Session session = Session.getInstance(p, null);
        session.setDebug(debug);

        MimeMessage msg = new MimeMessage(session);
        try {
            //msg.setFrom(new InternetAddress(email));
            msg.setFrom(new InternetAddress("xxx@xx.com.br"));
                
            for(int cont = 0; cont < emails.length; cont++){

                msg.setRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress(emails[cont]));
/*            InternetAddress[] address = new InternetAddress[emails.length];
            for(int cont = 0; cont < emails.length; cont++){
                address[cont] = new InternetAddress(emails[cont]);
            }
            
            msg.setRecipients(Message.RecipientType.TO, address);*/

                msg.setSentDate(new Date());
                msg.setSubject("Boca no Trombone");
                corpo = "<html>";
                corpo += "<head>";
                corpo += "<title></title>";
                corpo += "</head>";
                corpo += "<body>";
                corpo += "<table border=\"0\" style=\"font:Verdana, Arial, Helvetica, \"sans-serif \" align=\"center\" width=\"500\">";
                corpo += "<tr>";
                corpo += "<td colspan=\"2\" bgcolor=\"#E6E6E6\"><img src=\""+endereco2+"bocaEmail.jpg\" width=\"500\" height=\"158\" /></td>";
                corpo += "</tr>";
                corpo += "<tr>";
                corpo += "<td bgcolor=\"#E6E6E6\">E-mail</td>";
                corpo += "<td bgcolor=\"#E6E6E6\">"+email+"</td>";
                corpo += "</tr>";
                corpo += "<tr>";
                corpo += "<td bgcolor=\"#E6E6E6\">Telefone</td>";
                corpo += "<td bgcolor=\"#E6E6E6\">"+telefone+"</td>";
                corpo += "</tr>";
                corpo += "<tr>";
                corpo += "<td bgcolor=\"#E6E6E6\">Data e Hora</td>";
                corpo += "<td bgcolor=\"#E6E6E6\">"+dataHora+"</td>";
                corpo += "</tr>";
                if(emails[cont].equals("gustavo@linetec.com.br")){
                    corpo += "<tr>";
                    corpo += "<td bgcolor=\"#E6E6E6\">Ip</td>";
                    corpo += "<td bgcolor=\"#E6E6E6\">"+ip+"</td>";
                    corpo += "</tr>";
                }
                corpo += "<tr>";
                corpo += "<td bgcolor=\"#E6E6E6\">Nome ou Apelido</td>";
                corpo += "<td bgcolor=\"#E6E6E6\">"+nomeApelido+"</td>";
                corpo += "</tr>";
                corpo += "<tr>";
                corpo += "<td bgcolor=\"#E6E6E6\">Denúncia</td>";
                corpo += "<td bgcolor=\"#E6E6E6\">"+denuncia+"</td>";
                corpo += "</tr>";
                for(int i = 0; i < nomesArquivo.length; i++){
                    corpo += "<tr>";
                    corpo += "<td bgcolor=\"#E6E6E6\">Nome do Arquivo</td>";
                    corpo += "<td bgcolor=\"#E6E6E6\"><a href=\""+endereco+""+nomesArquivo[i]+"\">"+nomesArquivo[i]+"</a></td>";
                    corpo += "</tr>";
                }
                corpo += "<tr>";
                corpo += "<td bgcolor=\"#E6E6E6\">Texto</td>";
                corpo += "<td bgcolor=\"#E6E6E6\">"+texto+"</td>";
                corpo += "</tr>";
                corpo += "<tr>";
                corpo += "<td bgcolor=\"#E6E6E6\">&nbsp;</td>";
                corpo += "<td bgcolor=\"#E6E6E6\">&nbsp;</td>";
                corpo += "</tr>";
                corpo += "<tr>";
                corpo += "<td bgcolor=\"#E6E6E6\">Departamento(s) que recebeu(ram) essa denúncia</td>";
                corpo += "<td bgcolor=\"#E6E6E6\">";
                for(int x = 0; x < emails.length; x++){
                    if(emails[x].equals("xxx@xx.com.br")){
                    corpo += "Prefeitura Municipal, ";
                    }
                    if(emails[x].equals("xxx@xx.com.br")){
                    corpo += "Polícia Civil, ";
                    }
                    if(emails[x].equals("xxx@xx.com.br")){
                    corpo += "Prefeito, ";
                    }
                    if(emails[x].equals("xxx@xx.com.br")){
                    corpo += "Polícia Militar, ";
                    }
                    if(emails[x].equals("xxx@xx.com.br")){
                    corpo += "Ministério Público, ";
                    }
                    if(emails[x].equals("xxx@xx.com.br")){
                    corpo += "Corpo de Bombeiros, ";
                    }
                    if(emails[x].equals("xxx@xx.com.br")){
                    corpo += "C&acirc;mara Municipal, ";
                    }
                    if(emails[x].equals("xxx@xx.com.br")){
                    corpo += "Conselho Tutelar, ";
                    }
                    if(emails[x].equals("xxx@xx.com.br")){
                    corpo += "Procon, ";
                    }
                    if(emails[x].equals("xxx@xx.com.br")){
                    corpo += "Caema, ";
                    }
                    if(emails[x].equals("xxx@xx.com.br")){
                    corpo += "Governo do Estado de Sao Paulo, ";
                    }
                    if(emails[x].equals("xxx@xx.com.br")){
                    corpo += "Governo Federal do Brasil, ";
                    }
                }
                corpo += "</td>";
                corpo += "</tr>";
                corpo += "</table>";
                corpo += "</body>";
                corpo += "</html>";
                msg.setContent(corpo, "text/html;charset=ISO-8859-1");

                Transport transport = session.getTransport("smtp");
                transport.connect(host, username, senha);
                transport.send(msg);
                p.remove("mail.smtp.auth"); // thingol acrescentei isso para que a autenticação seja feita só uma vez, seria isso mesmo ou esta errado?
//                Transport.send(msg);

            }

            out.println("<script>window.alert('Denúncia enviada com Sucesso!')</script>");
            out.println("<script>window.location.href='index.jsp'</script>");

        }catch(AddressException e){
            out.println("Falha no Endereco: " + e.getMessage());
        }catch(MessagingException e){
            out.println("Falha na Mensagem: " + e.getMessage());
        }catch(Exception e){
            out.println(e.getMessage());
        }
        out.close();
    }
    
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    /** Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}

Galera… to tendo problemas aqui, mas estou utilizando somente a API Javamail mesmo, versão 1.3

O que acontece é o seguinte, já tentei com vários códigos que peguei na net por aí, mas meu e-mail nunca chega com anexo.
Na verdade o anexo chega no corpo em forma de texto, assim:

------=_Part_0_4875744.1272501496859
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Textando texto no meio
------=_Part_0_4875744.1272501496859
Content-Type: text/plain; name="C:\\arquivo_em_anexo.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="C:\\arquivo_em_anexo.txt"

conteudo do arquivo em anexo 123
conteudo do arquivo em anexo 456
conteudo do arquivo em anexo 789
conteudo do arquivo em anexo 012
conteudo do arquivo em anexo 345
------=_Part_0_4875744.1272501496859--

O código java que estou utilizando é o seguinte:

			Session session = Session.getInstance(p, null);

			Message message = new MimeMessage(session);
			message.setFrom(new InternetAddress("gp@hwhost.com.br"));
			message.addRecipient(Message.RecipientType.TO, new InternetAddress("teste@gmail.com"));
			message.setSubject("Hello JavaMail Attachment");

			BodyPart messageBodyPart = new MimeBodyPart();

			messageBodyPart.setText("Textando texto no meio");

			Multipart multipart = new MimeMultipart();
			multipart.addBodyPart(messageBodyPart);

			messageBodyPart = new MimeBodyPart();
			DataSource source = new FileDataSource("C:\\arquivo_em_anexo.txt");
			messageBodyPart.setDataHandler(new DataHandler(source));
			messageBodyPart.setFileName("C:\\arquivo_em_anexo.txt");
			multipart.addBodyPart(messageBodyPart);

			message.setContent(multipart);

			Transport tr = session.getTransport("smtp");
			tr.connect(host, fromAccount, password);
			tr.sendMessage(message, message.getAllRecipients());
			tr.close();

Detalhe: estou utilizando um exemplo da própria SUN… http://java.sun.com/developer/onlineTraining/JavaMail/contents.html#SendingAttachments

Já estou há dois dias vendo isso, sei lá, deve ser uma coisa pequena, mas já tentei com vários outros códigos e nada.

Alguém sabe o que pode estar acontecendo???

Valeu galera.