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.
salmaox
Outubro 9, 2009, 10:07am
#5
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]