Criei um programa que faz envio de emails com javamail, funciona bem com servidores como yahoo e gmail. Estes servidores usam a porta 465 e conexão SSL. Quando tento enviar pelo nosso servidor de email, que não usa a 465 e sim a porta 25 e não suporta conexão SSl, ele dá o seguinte erro:
javax.mail.MessagingException: Exception reading response;
nested exception is:
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1611)
>> Erro: Envio Mensagem
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1369)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412)
at javax.mail.Service.connect(Service.java:288)
at javax.mail.Service.connect(Service.java:169)
O que seria este erro ? Como consertar ?
Agradeço a quem ajudar.
Abraços.
Ivan posta o código para da uma olhada porque eu passei pelo mesmo problema parece que você esta tentando se conectar em um servidor que não usa SSL.
Pois é, na verdade também acho q é isso mesmo q está acontecendo, só que eu não sei acertar o código para enviar sem SSL.
public void sendMail(String from, String to, String subject, String message) {
Properties props = new Properties();
/*
props.setProperty("proxySet","true");
props.setProperty("socksProxyHost","192.168.155.1"); // IP do Servidor Proxy
props.setProperty("socksProxyPort","1080"); // Porta do servidor Proxy
*/
props.put("mail.transport.protocol", "smtp"); //define protocolo de envio como SMTP
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.host", mailSMTPServer); //server SMTP do GMAIL
props.put("mail.smtp.auth", "true"); //ativa autenticacao
props.put("mail.smtp.user", from); //usuario ou seja, a conta que esta enviando o email (tem que ser do GMAIL)
props.put("mail.debug", "true");
props.put("mail.smtp.port", mailSMTPServerPort); //porta
props.put("mail.smtp.socketFactory.port", mailSMTPServerPort); //mesma porta para o socket
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
//Cria um autenticador que sera usado a seguir
SimpleAuth auth = new SimpleAuth();
Session session = Session.getDefaultInstance(props, auth);
session.setDebug(true); //Habilita o LOG das ações executadas durante o envio do email
//Objeto que contém a mensagem
Message mensagem = new MimeMessage(session);
try {
//Setando o destinatário
mensagem.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
//Setando a origem do email
mensagem.setFrom(new InternetAddress(from));
//Setando o assunto
mensagem.setSubject(subject);
//Setando o conteúdo do corpo do email
mensagem.setContent(message,"text/plain");
} catch (Exception e) {
System.out.println(">> Erro: Completar Mensagem");
e.printStackTrace();
}
//Objeto encarregado de enviar os dados para o email
Transport tr;
try {
tr = session.getTransport("smtp"); //define smtp para transporte
tr.connect(mailSMTPServer, usuario, senha);
mensagem.saveChanges();
//envio da mensagem
tr.sendMessage(mensagem, mensagem.getAllRecipients());
tr.close();
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(">> Erro: Envio Mensagem");
e.printStackTrace();
}
}
}
Desde já agradeço.
Ivan, eu estava com o mesmo problema (necessitava da porta 25). Coloquei como comentário a linha
“// props.put(“mail.smtp.socketFactory.class”, “javax.net.ssl.SSLSocketFactory”)”
e funcionou blz