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:
packagetesteemail;importorg.apache.commons.mail.EmailException;importorg.apache.commons.mail.SimpleEmail;publicclassMyEmail{SimpleEmailemail=newSimpleEmail();StringuserMail="[email removido]";StringuserName="gilmarcand";StringuserPassword="minhasenha";publicvoidenvia(){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(EmailExceptionex){ex.printStackTrace();}}publicstaticvoidmain(String[]args){MyEmaile=newMyEmail();e.envia();}}
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:
packagetesteemail;importorg.apache.commons.mail.EmailException;importorg.apache.commons.mail.SimpleEmail;publicclassMyEmail{SimpleEmailemail=newSimpleEmail();StringuserMail="[email removido]";StringuserName="gilmarcand";StringuserPassword="minhasenha";publicvoidenvia(){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(EmailExceptionex){ex.printStackTrace();}}publicstaticvoidmain(String[]args){MyEmaile=newMyEmail();e.envia();}}
publicvoidenvia(){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(EmailExceptionex){ex.printStackTrace();}}publicstaticvoidmain(String[]args){Emaile=newEmail();e.envia();}
}
G
gilmarcandPJ
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
prsantos
Quem pode me ajudar?
Via OUTLOOK consigo enviar na mesma porta sem problemas.