Enviar email pelo Netbeans (URGENTE POR FAVOR)

Não estou conseguindo enviar email pela minha aplicação de jeito nenhum, se alguém puder me ajudar por favor …

CLASSE EMAIL

package Model;

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

public class Email extends Thread {

private String nomeDestinatario;
private String emailDestinatario;
private String assunto;
private String mensagem;

public Email(String nomeDestinatario, String emailDestinatario, String assunto, String mensagem) {

    this.nomeDestinatario = nomeDestinatario;
    this.emailDestinatario = emailDestinatario;
    this.assunto = assunto;
    this.mensagem = mensagem;
}

public Email(String nomeDestinatario, String emailDestinatario) {
    this.nomeDestinatario = nomeDestinatario;
    this.emailDestinatario = emailDestinatario;
}

public void setNomeDestinatario(String nomeDestinatario) {
    this.nomeDestinatario = nomeDestinatario;
}

public void setEmailDestinatario(String emailDestinatario) {
    this.emailDestinatario = emailDestinatario;
}

public void setAssunto(String assunto) {
    this.assunto = assunto;
}

public void setMensagem(String mensagem) {
    this.mensagem = mensagem;
}


@Override
public void run() {
    enviarEmail();
}

public boolean enviarEmail() {

    SimpleEmail email = new SimpleEmail();

    email.setDebug(true);
    email.setHostName("smtp.gmail.com");
    email.setSmtpPort(587);
    email.setStartTLSEnabled(true);

    try {
        email.addTo(emailDestinatario, nomeDestinatario);
        email.setFrom(EmailAutenticacao.email, EmailAutenticacao.nome);
        email.setSubject(assunto);
        email.setMsg(mensagem);

        email.setAuthentication(EmailAutenticacao.email, EmailAutenticacao.senha);
        email.send();

        return true;
    } catch (EmailException e) {
        e.printStackTrace();
    }

    return false;
}

}

=======================================

Chamando o método

 Email email = new Email("Gui", "meuemail@gmail.com", "testeEmail", "testando essa bosta");
         email.enviarEmail();

==========================================

O erro que da é o seguinte:

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:1398)
at org.apache.commons.mail.Email.send(Email.java:1423)
at Model.Email.enviarEmail(Email.java:69)
at View.ControleFrequencia.main(ControleFrequencia.java:162)
Caused by: javax.mail.MessagingException: Could not convert socket to TLS;
nested exception is:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1918)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:652)
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:1388)
… 3 more
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1959)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:328)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:322)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1614)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1052)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:987)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1072)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397)
at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:548)
at com.sun.mail.util.SocketFetcher.startTLS(SocketFetcher.java:485)
at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1913)
… 10 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302)
at sun.security.validator.Validator.validate(Validator.java:260)
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1596)
… 20 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:392)
… 26 more
CONSTRUÍDO COM SUCESSO (tempo total: 7 segundos)

==========================================================

Sim, eu já autorizei aplicativos menos seguros, pq não consigo responder sua pergunta? WTF ‘-’

1 curtida

Amigo, tudo bem?

Você já autorizou os aplicativos menos seguros em sua conta?

https://myaccount.google.com/lesssecureapps

kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk parece eu com raiva, centésima vez e a merda não funciona

Já sim

Testa aí

   String host = "smtp.gmail.com";
     String user = "seuemail@gmail.com";
     String pass = "suasenha";
     String to = "destinatario1";
     String to2 = "destinatario2";
     String to3 = "destinatario3";
     String from = "emailenviando@gmail.com";
     String subject = "Testando essa bosta";
     String messageText = " TESTEEEEEEEEEEEEEEEEEEEEEEEE "; // Pode usar HTML também! 
     boolean sessionDebug = false;

     Properties props = System.getProperties();

     props.put("mail.smtp.starttls.enable", "true");
     props.put("mail.smtp.host", host);
     props.put("mail.smtp.port", "587");
     props.put("mail.smtp.auth", "true");
     props.put("mail.smtp.starttls.required", "true");
     props.put("mail.smtp.ssl.trust", "smtp.gmail.com");

    java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
    Session mailSession = Session.getDefaultInstance(props, null);
    mailSession.setDebug(sessionDebug);
    Message msg = new MimeMessage(mailSession);
    msg.setFrom(new InternetAddress(from, "EU SOU TOPZERA FIO")); // Aqui vai aparecer seu nome ou o nome que vc quiser, ao invés de aparecer só o email.
    InternetAddress[] address = {new InternetAddress(to), new InternetAddress(to2), new InternetAddress(to3)}; // aqui estão os destinatários.
    msg.setRecipients(Message.RecipientType.TO, address);
    msg.setSubject(subject);
    msg.setSentDate(new Date());
    msg.setContent(messageText, "text/html;charset=UTF-8");

    Transport transport = mailSession.getTransport("smtp");
    transport.connect(host, user, pass);
    transport.sendMessage(msg, msg.getAllRecipients());
    transport.close();
                    
    System.out.println("Enviado com Sucesso");

Qual import eu utilizo? uso o do Commons mail mesmo?

Precisava saber todos os jars necessários para funcionar o e-mail, estou refazendo tudo do zero a parte de email

Estou somente com este erro agora:

Desculpa a demora, eu fiquei o dia fora. Cara, você já fez os try catchs?

Usa essa API: https://drive.google.com/file/d/1XQkYIIaUCd9XNENI5p6oL2-wka0OwJJX/view?usp=sharing

Consegui hoje já, hoje foi a minha apresentação do TCC (50% do projeto) e deu tudo certo graças a você!! Me salvou cara, valeu

1 curtida

Aí sim cara! Fico feliz por você. Vc trocou a API? O que fez pra arrumar lá?