Email TLS

6 respostas
salmaox

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;

  }

}

6 Respostas

E

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.

salmaox

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

E

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.

salmaox

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

geraldolmr

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.

G

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.

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("[email removido]"));
		message.addRecipient(Message.RecipientType.TO, new InternetAddress("[email removido]"));
		message.setSubject("the-subject");
		message.setContent("the body message", "text/plain");
		Transport.send(message);
	}
}
Criado 8 de outubro de 2009
Ultima resposta 14 de nov. de 2009
Respostas 6
Participantes 4