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:
[code]package testeemail;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
public class MyEmail
{
SimpleEmail email = new SimpleEmail();
String userMail = “gilmarcand@yahoo.com.br”;
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("gilmarcand@gmail.com");
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();
}
}[/code]
Agradeço se alguém puder me ajudar!
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 = "gilmarcand@yahoo.com.br";
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("gilmarcand@gmail.com");
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();
}
}
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 = “luizsi21@yahoo.com.br”;
String userName = “luizsi21@yahoo.com.br”;
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("gilmarcand@gmail.com");
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();
}
}
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!
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 ('prsantos@copaibaartefatos.com.br');
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 - prsantos@copaibaartefatos.com.br