Email TLS

boa tarde,

estou com problemas para enviar email com conexao segura TLS. Ele simplesmente não envia. segue o script, se alguém puder me ajudar…desde já muito obrigado.

package br.inpe.dsa.mail;

import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.MessagingException;

public class mail {

  public boolean enviaEmail(String to, String from, String subject, String body) {
	  	boolean status=false;

        try {

              Properties props = new Properties();
              
              System.setProperty("javax.net.debug", "ssl,handshake");
              props.put("mail.smtp.host", "meuservidor");
             // props.put("mail.smtp.auth", "true"); 
              props.put("mail.smtp.starttls.enable", "true");
              props.put("mail.smtp.ssl.protocols", "SSLv3 TLSv1");

              //Autenticação                

              Session sessao = Session.getDefaultInstance (props, new Authenticator() {

                  protected PasswordAuthentication getPasswordAuthentication() {

                      return new PasswordAuthentication("user", "password");

                  }
              });                            	                 	  

              MimeMessage message = new MimeMessage(sessao);

              message.setFrom(new InternetAddress(from));

              Address toAddress = new InternetAddress(to);
              message.addRecipient(Message.RecipientType.TO, toAddress);

              message.setSubject(subject);
              message.setContent(body, "text/html");
              	
              Transport.send(message);
              status = true;
            
        } catch ( MessagingException msg) {
        	
        	  msg.printStackTrace();	
        	  status = false;
        	
        }
		return status;

  }

}

Procure aqui no GUJ sobre como usar o JavaMail com o GMail, que usa TLS também. Não sei de cor quais são os parâmetros adequados.

mesmo tentando fazer igual ao gmail, não deu!

Qual é o stack trace? Pelo que imagino, o certificado do servidor de email não foi emitido por uma autoridade certificadora que está presente em no keystore cacerts.

consegui usando

System.setProperty(“javax.net.debug”, “ssl,handshake”);
props.put(“mail.smtp.host”, “servidor de smtp”);
props.put(“mail.smtp.starttls.enable”, “true”);
props.put(“mail.smtp.ssl.protocols”,“SSLv3 TLSv1”);
props.put(“mail.debug”, “true”);

obrigado

Eu utilizo as propriedades:

            props.put("mail.smtp.host", "smtp.gmail.com");
            props.put("mail.smtp.starttls.enable","true");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.socketFactory.port", "465");
            props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            props.put("mail.smtp.socketFactory.fallback", "false");

chamo a sessão usando autenticador (dentro de um bloco try):

                Authenticator auth = new SMTPAuthenticator();
                Session session = Session.getInstance(props, auth);

e defino a classe:

    private class SMTPAuthenticator extends javax.mail.Authenticator {
        @Override
        public PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(user-gmail, password);
        }
    }

onde:

user-gmail é o e-mail da conta gmail e password é a senha.

Geraldo.

Esse aqui eu fiz a pouco e está funcionando na minha aplicação. Faça um teste com esse código alterando os valores do remetente, destinatário, seu usário e senha.

[code]import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class Gmail {

public static void main(String args[])
    throws Exception {
	Properties prop = new Properties();
	prop.put("mail.smtp.host", "smtp.gmail.com");
	prop.put("mail.smtp.auth", "true");
	prop.put("mail.smtp.port", "465");
	prop.put("mail.smtp.starttls.enable", "true");
	prop.put("mail.smtp.socketFactory.port", "465");
	prop.put("mail.smtp.socketFactory.fallback", "false");
	prop.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

	Authenticator auth = new Authenticator() {
		@Override
		protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
			return new javax.mail.PasswordAuthentication("the-username-here", "the-passwd-here");
		}
	};

	Session session = Session.getInstance(prop, auth);
	MimeMessage message = new MimeMessage(session);
	message.setFrom(new InternetAddress("from-email@domain.com"));
	message.addRecipient(Message.RecipientType.TO, new InternetAddress("to-email@domain.com"));
	message.setSubject("the-subject");
	message.setContent("the body message", "text/plain");
	Transport.send(message);
}

}[/code]