Enviar email em Java dando erro. [RESOLVIDO]

Pessoal, estou a vários dias pesquisando pra fazer um código pra enviar email usando o gmail. Mas nada está funcionando.
Quero fazer uma aplicação simples mesmo, apenas executando o main e enviando o email.
Se alguém puder ajudar, agradeço.

segue o código que fiz baseado no tutorial do Paulo silveira
http://www.guj.com.br/articles/21

[code]package br.com.email.classes;

import java.util.Date;
import java.util.Properties;

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

import org.apache.commons.mail.EmailException;

public class EnviaEmail {

public static void main(String[] args) throws EmailException {

	EnviaEmail enviaEmail = new EnviaEmail();
	enviaEmail.sendEmail();
}

public void sendEmail(){
	Properties p = new Properties();
	p.put("mail.host", "smtp.gmail.com");
	p.put("mail.stmp.port", "587");
	Authenticator auth = new TesteAuth();
	Session session = Session.getInstance(p, auth);   
	MimeMessage msg = new MimeMessage(session);
	
	try {   
	    // "de" e "para"!!   
	    msg.setFrom(new InternetAddress("meu_email@gmail.com"));   
	    msg.setRecipient(Message.RecipientType.TO, new InternetAddress("destinatario@qualquerEmail.com.br"));   
	    // nao esqueca da data!   
	    // ou ira 31/12/1969 !!!   
	    msg.setSentDate(new Date());   
	    msg.setSubject("Teste envio de email em Java");   
	    msg.setText("Teste envio de email em Java");
	    // evniando mensagem (tentando)   
	    Transport.send(msg);   
	}   
	catch (AddressException e) {   
	    e.printStackTrace();   
	}   
	catch (MessagingException e) {   
		e.printStackTrace();   
	}
}

class TesteAuth extends Authenticator{
	  
    public TesteAuth(){   
        getPasswordAuthentication();   
    }   
       
    public PasswordAuthentication getPasswordAuthentication() {   
  
        String username, password;   
        username = "meu_usuario_no_gmail";   
        password = "minha_senha";   
  
        return new PasswordAuthentication(username, password);   
    }   
}

}[/code]

Segue o erro que ocorre na linha:

MimeMessage msg = new MimeMessage(session);

javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 25; nested exception is: java.net.ConnectException: Connection timed out: connect at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1706) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:525) at javax.mail.Service.connect(Service.java:291) at javax.mail.Service.connect(Service.java:172) at javax.mail.Service.connect(Service.java:121) at javax.mail.Transport.send0(Transport.java:190) at javax.mail.Transport.send(Transport.java:120) at br.com.email.classes.EnviaEmail.sendEmail(EnviaEmail.java:45) at br.com.email.classes.EnviaEmail.main(EnviaEmail.java:24) Caused by: java.net.ConnectException: Connection timed out: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:525) at java.net.Socket.connect(Socket.java:475) at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:284) at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:227) at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1672) ... 8 more

Vc está tomando timed out. A porta está correta?

É aquela mesmo?

Oi jakefrog,
a porta tá certa
http://mail.google.com/support/bin/answer.py?hl=pt&answer=13287
O erro ocorre na linha abaixo e não está pegando a porta, pois no erro mostra que não está conseguindo conectar na porta 25, mas eu setei a 587. Será que o código tá errado?

MimeMessage msg = new MimeMessage(session);

Nesse post tem um exemplo

[quote]Nesse post tem um exemplo


Executei o exemplo do link acima, coloquei meu usuário e senha do gmail, tentei com as portas 465 e depois 587, mas dá erro.

[code]public void enviaEmailSimples() throws EmailException {

    SimpleEmail email = new SimpleEmail();   
    email.setHostName("smtp.gmail.com"); // o servidor SMTP para envio do e-mail   
    email.addTo("teste@gmail.com", "Guilherme"); //destinatário   
    email.setFrom("teste@gmail.com", "Eu"); // remetente   
    email.setSubject("Teste -> Email simples"); // assunto do e-mail   
    email.setMsg("Teste de Email utilizando commons-email"); //conteudo do e-mail   
    email.setAuthentication("teste", "xxxxx");   
    email.setSmtpPort(465);   
    email.setSSL(true);   
    email.setTLS(true);   
    email.send();     
}[/code]

Eu comentei as linhas abaixo pois não são reconhecidas. [color=red]The method setSSL(boolean) is undefined for the type SimpleEmail[/color]
Será que falta algum jar? Estou usando o commons-email-1.0.jar

email.setSSL(true); email.setTLS(true);

Nesse exemplo utilizei o commons-email-1.1.jar
Tente atualizar e avise se funcionou

ve se isso lhe ajuda

abrass

:wink:

Está em casa, ou a rede que está usando possui proxy/firewall? Sua conexão com SMTP pode estar sendo barrada.

Alterei as libs para commons-email-1.2.jar, commons-email-1.2-javadoc.jar e commons-email-1.2-sources.jar e os métodos setSSL e setTLS foram reconhecidos.
Mas continua dando erro. É preciso configurar algo no GMAIL?

Exception in thread "main" org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.gmail.com:587 at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1242) at org.apache.commons.mail.Email.send(Email.java:1267) at br.com.email.classes.CommonsMail.enviaEmailSimples(CommonsMail.java:35) at br.com.email.classes.CommonsMail.<init>(CommonsMail.java:14) at br.com.email.classes.CommonsMail.main(CommonsMail.java:118) Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465; nested exception is: java.net.ConnectException: Connection timed out: connect at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1706) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:525) at javax.mail.Service.connect(Service.java:313) at javax.mail.Service.connect(Service.java:172) at javax.mail.Service.connect(Service.java:121) at javax.mail.Transport.send0(Transport.java:190) at javax.mail.Transport.send(Transport.java:120) at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1232) ... 4 more Caused by: java.net.ConnectException: Connection timed out: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:525) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:550) at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:141) at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:284) at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:201) at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1672) ... 11 more

[quote]ve se isso lhe ajuda


Já vi esse tópico, não ajudou. vlw

Agora não estou em casa, mas já executei de casa e tb deu erro. Vou executar hj a noite de casa com as alterações que fiz pra ver vai.

Experimenta usar outra conta de email OU troca a porta…

Estas são as configurações que estou usando para enviar email. Mas estou utilizando Spring. O endereço, porta e etc, que estou usando seguem abaixo:

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
	     <property name="host" value="smtp.gmail.com" />
	     <property name="port" value="465" />
	     <property name="protocol" value="smtps" />
	     <property name="username" value="seu_email@gmail.com"/>
	     <property name="password" value="sua_senha"/>
	     <property name="javaMailProperties">
	             <props>
	             <prop key="mail.smtps.auth">true</prop>
	             <prop key="mail.smtps.starttls.enable">true</prop>
	             <prop key="mail.smtps.debug">true</prop>
	             </props>
             </property>
 </bean>

Executando de casa, funcionou. Provavelmente era bloqueado no trabalho.
Mais uma coisa, como faço pra ver o log das execuções? Li em algum tópico que dava pra habilitar, mas não achei mais o link.

Obrigado pela ajuda.

Esquece, já encontrei, é só colocar setDebug(true).

Obrigado a todos.

Já passei por isso. Horas pesquisando e era o proxy da rede barrando. rs
Primeiro dia dedicado a ajudar no GUJ e já ajudei alguns, tem muita gente iniciando, com dúvidas, legal.

Bons códigos.

Já passei por isso. Horas pesquisando e era o proxy da rede barrando. rs
Primeiro dia dedicado a ajudar no GUJ e já ajudei alguns, tem muita gente iniciando, com dúvidas, legal.

Bons códigos.

Então fredericomaia10, na verdade eu testava em casa e no trampo, mas só ontem com as ajudas que achei o código certo, depois foi só descartar a questão do proxy. abç.