Envio de E-mail. Falha na autenticação

4 respostas
G

Olá comunidade,

estou tentando utilizar a API Commons-Email para enviar mensagens e no momento do envio é gerada uma EmailException causada por uma falha de autenticação no servidor SMTP. O estranho é que estou usando uma conta Yahoo! e as informações de porta, SSL e hostname são as disponibilizadas pela própria Yahoo! Como nunca usei esta API, queria que alguém desse uma olhada no meu código:
package testeemail;

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;

public class MyEmail
{
    SimpleEmail email = new SimpleEmail();
    String userMail = "[email removido]";
    String userName = "gilmarcand";
    String userPassword = "minhasenha";
    
    public void envia()
    {
        try
        {
           email.setHostName("smtp.mail.yahoo.com.br");
           email.setFrom(userMail);

           email.setMsg("Testando envio de e-mail em Java");
           email.setSubject("teste de email");

           email.setSSL(true);
           email.setSmtpPort(465);
           email.setAuthentication(userName, userPassword);

           email.addTo("[email removido]");
           email.send();
           System.out.print("Email enviado com sucesso!");
        }
        catch(EmailException ex)
        {
            ex.printStackTrace();
        }       
    }
    
    public static void main(String[] args)
    {
        MyEmail e = new MyEmail();       
        e.envia();
    }
}

Agradeço se alguém puder me ajudar!

4 Respostas

G

Olá mais uma vez! Já consegui resolver. O problema era que o yahoo usa TLS na encriptação. usei o método setTLS(true) antes do envio e resolveu. Olha aí em baixo:

package testeemail;   
  
import org.apache.commons.mail.EmailException;   
import org.apache.commons.mail.SimpleEmail;   
  
public class MyEmail   
{   
    SimpleEmail email = new SimpleEmail();   
    String userMail = "[email removido]";   
    String userName = "gilmarcand";   
    String userPassword = "minhasenha";   
       
    public void envia()   
    {   
        try   
        {   
           email.setHostName("smtp.mail.yahoo.com.br");   
           email.setFrom(userMail);   
  
           email.setMsg("Testando envio de e-mail em Java");   
           email.setSubject("teste de email");   
  
           email.setSSL(true);
           email.setTLS(true); // utiliza TLS na encriptação  
           email.setSmtpPort(465);   
           email.setAuthentication(userName, userPassword);   
  
           email.addTo("[email removido]");   
           email.send();   
           System.out.print("Email enviado com sucesso!");   
        }   
        catch(EmailException ex)   
        {   
            ex.printStackTrace();   
        }         
    }   
       
    public static void main(String[] args)   
    {   
        MyEmail e = new MyEmail();         
        e.envia();   
    }   
}
D

Olá Gilmarcamp,

usei a sua rotina e deu o seguinte erro: org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.mail.yahoo.com.br:465

at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1138)

at org.apache.commons.mail.Email.send(Email.java:1163)

at Email.envia(Email.java:27)

at Email.main(Email.java:39)

Caused by: javax.mail.AuthenticationFailedException

at javax.mail.Service.connect(Service.java:319)

at javax.mail.Service.connect(Service.java:169)

at javax.mail.Service.connect(Service.java:118)

at javax.mail.Transport.send0(Transport.java:188)

at javax.mail.Transport.send(Transport.java:118)

at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1128) 3 more

pode dar uma olhada pra mim, por favor. Obrigado!!!

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;

public class Email

{

SimpleEmail email = new SimpleEmail();

String userMail = [email removido];

String userName = [email removido];

String userPassword = minha senha;
public void envia()     
{     
    try     
    {     
       email.setHostName("smtp.mail.yahoo.com.br");     
       email.setFrom(userMail);     
 
       email.setMsg("Testando envio de e-mail em Java");     
       email.setSubject("teste de email");     
 
       email.setSSL(true);   
       email.setTLS(true); // utiliza TLS na encriptação     
       email.setSmtpPort(465);     
       email.setAuthentication(userName, userPassword);     
 
       email.addTo("[email removido]");     
       email.send();     
       System.out.print("Email enviado com sucesso!");     
    }     
    catch(EmailException ex)     
    {     
        ex.printStackTrace();     
    }           
}     
     
public static void main(String[] args)     
{     
    Email e = new Email();           
    e.envia();     
}

}

G

Olá cara, desculpe demorar te responder, eu andei um tempo fora por motivo de força maior.
O erro que você postou mostra uma falha na autenticação do usuário. O código tá legal, eu testei com eu usuário do Yahoo! e funcionou tranquilo. Vê nas configurações da tua conta no Yahoo! se a porta é mesmo esta.

Abraço!

P

Quem pode me ajudar?

Via OUTLOOK consigo enviar na mesma porta sem problemas.

jdbc:mysql://72.232.2.139:3306/copaiba2009
SELECT * FROM tb_emailsmarketing WHERE email IN ('[email removido]');
Total de Registros: 0org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.copaibaartefatos.com.br:25
	at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1242)
	at org.apache.commons.mail.Email.send(Email.java:1267)
	at principal.Enviar.envia2(Enviar.java:270)
	at principal.Enviar.<init>(Enviar.java:94)
	at principal.PreparaEmail.folderSuporteVaso(PreparaEmail.java:48)
	at principal.PreparaEmail.<init>(PreparaEmail.java:21)
	at principal.EnviaEmail.<init>(EnviaEmail.java:9)
	at principal.EnviaEmail.main(EnviaEmail.java:18)
Caused by: javax.mail.AuthenticationFailedException: 535 Authentication failed

	at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:809)
	at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:752)
	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:669)
	at javax.mail.Service.connect(Service.java:317)
	at javax.mail.Service.connect(Service.java:176)
	at javax.mail.Service.connect(Service.java:125)
	at javax.mail.Transport.send0(Transport.java:194)
	at javax.mail.Transport.send(Transport.java:124)
	at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1232)
	... 7 more
1 - [email removido]
Criado 19 de março de 2008
Ultima resposta 4 de jul. de 2011
Respostas 4
Participantes 3