Envio de emails com javamail

3 respostas
I

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.

3 Respostas

dcorteztec

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.

I

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.

R

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

Criado 9 de dezembro de 2009
Ultima resposta 13 de jul. de 2010
Respostas 3
Participantes 3