Erro ao enviar email com JavaMail [RESOLVIDO]

E aí galera?

Estou tentando enviar email utilizando o javax.mail, mas sempre dá o mesmo erro:

javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
  nested exception is:
    java.net.ConnectException: Connection refused

O meu codigo é este:

Esta é a clase para autenticação:

    import javax.mail.Authenticator;  
    import javax.mail.PasswordAuthentication;  
      
    public class SMTPAuthenticator extends Authenticator {  
         
       private String username;  
       private String password;  
         
       /** 
       * @param user 
       * @param pass 
       */  
      public SMTPAuthenticator(String user, String pass) {  
         this.username = user;  
         this.password = pass;  
      }  
        
      /** 
       *  
       * @return 
       * 
       * @see javax.mail.Authenticator#getPasswordAuthentication() 
       */  
      public PasswordAuthentication getPasswordAuthentication() {  
         return new PasswordAuthentication(username, password);  
      }  
      
      
   }  

E esta é a que executa:

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

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

public class MailTest {
	public static void main(String args[]) {
		Properties p = new Properties();
		p.put("pop.mail.yahoo.com.br", "smtp.mail.yahoo.com.br");
   
	        Authenticator auth = new SMTPAuthenticator("meu emailr", "minha senha");
		Session session = Session.getInstance(p, auth);
		MimeMessage msg = new MimeMessage(session);
		
		try{
			msg.setFrom(new InternetAddress("origem"));
			msg.setRecipient(Message.RecipientType.TO, new InternetAddress("detino"));
			
			msg.setSentDate(new Date());
			
			msg.setSubject("Teste");
			msg.setText("Enviando msg de teste");
			
			Transport.send(msg);
			
		}catch(AddressException e){
			System.out.println("*************Erro 1: " + e);
		}catch(MessagingException e){
			System.out.println("*************Erro 2: " + e);
		}

	}

}

:?: :?:

Você não esta definindo as propriedades certas para o Session, deveriam ser essas:

p.setProperty("mail.transport.protocol", "smtp"); p.setProperty("mail.host", "smtp.mail.yahoo.com.br");

Abraço

Verifica se a porta do SMTP(geralmente a 25) está desbloqueada. Tive esse problema e entrei em contato com o pessoal da rede e funcionou!

Nossa, valeu lcegatti, não sabia que era só isso.

Mas agora está dando outro erro:

com.sun.mail.smtp.SMTPSendFailedException: 530 authentication required - for help go to http://help.yahoo.com/help/us/mail/pop/pop-11.html

Então, ai ja depende se o yahoo fornece ou não acesso SMTP. Talvez ele tenha alguma opção para habilitar acesso SMTP ao seu usuario, isso você tem que verificar nas configurações de email.

No gmail por exemplo funciona de boa “smtp.gmail.com”.

Abraço

Deu certo!

Ao inserir essas linhas no código, funcionou:

p.setProperty("mail.smtp.user", "meu login");   //setei o login
p.setProperty("mail.smtp.password", "minha senha"); // e a senha
p.put("mail.smtp.starttls.enable","true"); //não sei ao certo para que serve, mas tive que colocar...
p.setProperty("mail.smtp.auth", "true");  //setei a autenticação
String user = p.getProperty("mail.smtp.user");
String password = p.getProperty("mail.smtp.password");

Authenticator auth = new SMTPAuthenticator(user, password);

Obrigado!!