Javamail para LOCAWEB

3 respostas
P

Bom dia a todos.

Desenvolvi um robô que envia emails corretamente via GMAIL e ITMNetWOrks.

Agora estou tentando implementar para LOCAWEB e recebo o seguinte erro:

jdbc:sqlserver://127.0.0.1:1433;DatabaseName=RHB2006-Desenvolvimento
SELECT * FROM Cliente cli WHERE cli.ClienteBloqueado = 'N' AND       cli.ClienteEmail IN ('[email removido]',                            '[email removido]',                            '[email removido]');
Total de Registros: 0javax.mail.MessagingException: Could not connect to SMTP host: 200.234.210.11, port: 587;
  nested exception is:
	javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
	at javax.mail.Service.connect(Service.java:317)
	at javax.mail.Service.connect(Service.java:176)
	at javax.mail.Service.connect(Service.java:125)
	at javax.mail.Transport.send0(Transport.java:194)
	at javax.mail.Transport.send(Transport.java:124)
	at principal.Enviar.envia(Enviar.java:237)
	at principal.Enviar.<init>(Enviar.java:97)
	at principal.PreparaEmail.folderSuporteVaso(PreparaEmail.java:57)
	at principal.PreparaEmail.<init>(PreparaEmail.java:21)
	at principal.EnviaEmail.<init>(EnviaEmail.java:9)
	at principal.EnviaEmail.main(EnviaEmail.java:18)

Estou usando o seguinte código

//Configura algumas propriedades e pega a seção padrão
			
			Properties props = new Properties();
			props.put("mail.transport.protocol", "smtp");
			props.put("mail.host", this.strServidorSMTP);
			props.put("mail.smtp.auth", this.bolAutenticacaoServidor);
			props.put("mail.smtp.starttls.enable", "true");
			props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
			props.put("mail.smtp.port", this.strPortaServidorSMTP);

Podem me ajudar por favor?

Obrigado.

3 Respostas

P
[size=18] javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? [/size]
C
prsantos:
[size=18] javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? [/size]

Olá bom dia prsantos tudo tranquilo.

Cara eu apanhei muito para faze essas implementações de envio de email, segue um exemplo que funciona no : hotmail, gmail,yahoo, e outros mais.

//Método adicionado o parâmetro que indica se o envio do email será texto simples (true) ou texto Html (false)
   public static void enviar(String mensagem, String assunto, ArrayList<String> emailDestinatario, ArrayList<File> anexos, boolean emailPadrao) throws ValidacaoException, AmbienteException
   {
      if (mensagem == null || mensagem.trim().equals(""))
      {
         new ValidacaoException("A Mensagem (texto) do email não foi informada");
      }
      if (assunto == null || assunto.trim().equals(""))
      {
         new ValidacaoException("O Assunto do email não foi informado");
      }
      if (emailDestinatario == null || emailDestinatario.size() == 0)
      {
         new ValidacaoException("O(s) E-mail(s) do(s) destinatário(s) deve(m) ser informado(s)");
      }
   
      if (config == null || !config.containsKey("PROVEDOR") || config.getString("PROVEDOR") == null || config.getString("PROVEDOR").trim().equals(""))
         throw new AmbienteException("Configurações do servidor SMTP para envio de e-mail (email.properties) não definidas.");
      
      boolean autenticacao = config.getBoolean("AUTENTICACAO");
      boolean autTls = config.getBoolean("TLS");
      boolean debug = config.getBoolean("DEBUG");
      
      //smtp do provedor de email
      Properties props = new Properties();
      props.put("mail.smtp.host", config.getString("PROVEDOR").trim());
      props.put("mail.smtp.port", config.getString("PORTA").trim());
      props.put("mail.transport.protocol", "smtp");
      props.put("mail.smtp.auth", String.valueOf(autenticacao));

      //Usuario para conexão ao servidor SMTP
      
      
      if (config.containsKey("USUARIO"))
         USUARIO = config.getString("USUARIO").trim();
      else
         USUARIO = config.getString("EMAIL_REMETENTE").trim();

      props.put("mail.user", USUARIO);
      props.put("mail.pwd", config.getString("SENHA").trim());
      props.put("mail.smtp.socketFactory.fallback", "false");
      props.put("mail.smtp.ssl", "true");
      props.put("mail.smtp.ehlo", "true");

      if (autTls)
      {
         props.put("mail.smtp.socketFactory.port", config.getString("PORTA").trim());
         props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
         props.put("mail.smtp.socketFactory.fallback", "false");
         props.put("mail.smtp.starttls.enable", "true");
         props.put("mail.smtp.ssl", "true");
      }

      Session session;

      try
      {
         if (autenticacao)
         {
            Authenticator aut = new Authenticator()
               {
                  public PasswordAuthentication getPasswordAuthentication()
                  { 
                     return new PasswordAuthentication(USUARIO, config.getString("SENHA").trim());
                  }
               };
   
            session = Session.getDefaultInstance(props, aut);
         }
         else
         {
            session = Session.getDefaultInstance(props);
         }
   
         session.setDebug(debug);
   
         MimeMessage msg = new MimeMessage(session);
   
         //email do REMETENTE.
         InternetAddress address = new InternetAddress(config.getString("EMAIL_REMETENTE").trim());
         msg.setFrom(address);
   
         //email do DESTINATARIO 
         InternetAddress[] addressTo = new InternetAddress[emailDestinatario.size()];
         for (int i = 0; i < emailDestinatario.size(); i++)
            addressTo[i] = new InternetAddress(emailDestinatario.get(i));
         msg.setRecipients(Message.RecipientType.TO, addressTo);
   
         msg.setSubject(assunto, "UTF-8");
         msg.setSentDate(new Date());
         
         List<String> listaImagens = new ArrayList<String>();
         
         //Monta o tipo do email de acordo com o tipo do conteúdo. Texto simples ou HTML (related)         
         Multipart mp = null;
         if (emailPadrao)
            mp = new MimeMultipart();
         else
         {
            mp = new MimeMultipart("related");
            //Se for HTML, busca as ocorrências da TAG <img> com os nomes da imagens.
            String link = null;
            String resultImg;
            String resultSrc;
            Pattern regex = Pattern.compile("&lt;img([^&gt;]|[\\r\\n])*&gt;&quot;); 
            Pattern regex2 = Pattern.compile(&quot;src=\&quot;([^\&quot;]|[\\r\\n])*\&quot;&quot;); 
            Matcher msgImg = regex.matcher(mensagem); 
            Matcher msgSrc;
            int numrImg = 1;
            //Busca todos os &lt;img....&gt;
            while (msgImg.find()) { 
                resultImg = msgImg.group(); 
                msgSrc = regex2.matcher(resultImg);
                //dentro de &lt;img...&gt; busca a parte do src=....
                if (msgSrc.find())
                {
                   resultSrc = msgSrc.group();
                   link = msgSrc.group().replaceFirst("src=\"", "").replaceFirst("\"", "");
                   //Troca no nome da imagem do HTML pelo padrão cid:imagemX
                   mensagem = mensagem.replaceFirst(link,"cid:imagem"+numrImg);
                   //Adiciona o nome das imagens numa lista
                   listaImagens.add(link);
                   numrImg++;
                }  
            }
         }
         
         BodyPart bpText = new MimeBodyPart();
         bpText.setText(mensagem);
         bpText.setHeader("Content-Language", "pt-BR");
         
         //Monta o cabeçalho do email de acordo com o tipo de conteúdo
         if (emailPadrao)
            bpText.setHeader("Content-Type", "text/plain; charset=ISO-8859-1");
         else
            bpText.setHeader("Content-Type", "text/html; charset=ISO-8859-1");
            
         bpText.setHeader("Content-Transfer-Encoding", "8bit");
         mp.addBodyPart(bpText);
         
         //se for email HTML, adicionará as imagens
         if (!emailPadrao)
         {
            int numrImg = 1;
            BodyPart imagemHtml = null;
            DataSource imgFds  = null;
            for (String img : listaImagens) {
                  //Busca as imagens a partir da pasta "imagens"
                  String imagemAtual = DomnDiretorios.DIRETORIO_RAIZ + "\\imagens\\" + img;
                  File arqImg = new File(imagemAtual);
                  if (arqImg.exists())
                  {
                     //se o arquivo for encontrado, vincular ele ao nome do padrão cid:imagemX
                     imagemHtml = new MimeBodyPart();
                     imgFds  = new FileDataSource(imagemAtual);
                     imagemHtml.setDataHandler( new DataHandler(imgFds) );
                     imagemHtml.setHeader("Content-ID", "&lt;imagem" + numrImg + "&gt;&quot;);
                     mp.addBodyPart(imagemHtml);                    
                  }
                  else
                  //Se o arquivo não existe, gerar log informando, mas sem interromper o envio
                  {
                     log.error(&quot;Arquivo de Imagem: &quot; + imagemAtual + &quot; não encontrado.&quot; );                     
                  }

                numrImg++;                     
             }                 
         }       
                
         if (anexos != null && anexos.size() &gt; 0)
         {
            for (int j = 0; j &lt; anexos.size(); j++)
            {
               BodyPart bp = new MimeBodyPart();
               FileDataSource fds = new FileDataSource(anexos.get(j));
               bp.setDataHandler(new DataHandler(fds));
               bp.setFileName(anexos.get(j).getName());
               mp.addBodyPart(bp);
            }
         }

         msg.setContent(mp);
         msg.setHeader(&quot;Content-Language&quot;, &quot;pt-BR&quot;);
         msg.setHeader(&quot;Content-Transfer-Encoding&quot;, &quot;8bit&quot;);
         
         Transport transp = session.getTransport();
         transp.connect();
         transp.sendMessage(msg, msg.getAllRecipients());
         transp.close();
//         Transport.send(msg);
      }
      catch (AddressException e)
      {
         new ValidacaoException(&quot;Erro: Endereço de e-mail inválido. Detalhes do erro: &quot; + e.getMessage(), e);
      }
      catch (MessagingException e)
      {
         new AmbienteException(&quot;Erro: Falha ao enviar e-mail. Detalhes do erro: &quot; + e.getMessage(), e);
      }

   }
P

Boa tarde Cloude.

Obrigado pela ajuda.
          Acabei de chegar do almoço.
          Começarei a analisar seu código.
          Tomara que isso resolva.

          Te falo mais tarde.

          Valeu!
Criado 8 de dezembro de 2011
Ultima resposta 8 de dez. de 2011
Respostas 3
Participantes 2