Envio de e-mail em Java utilizando o gmail

Olá, boa noite! Tudo bem?
Estou tentando enviar um e-mail através da minha aplicação em java pela IDE Netbeans. Porém eu não consigo enviar o e-mail e a IDE apresenta o seguinte erro:

Exception in thread “main” java.lang.RuntimeException: javax.mail.AuthenticationFailedException: 535-5.7.8 Username and Password not accepted. For more information, go to
535 5.7.8 Can't sign in to your Google Account - Gmail Help 41be03b00d2f7-77d667ec487sm4166226a12.75 - gsmtp

at Servico.Email2.main(Email2.java:72)

Caused by: javax.mail.AuthenticationFailedException: 535-5.7.8 Username and Password not accepted. For more information, go to
535 5.7.8 Can't sign in to your Google Account - Gmail Help 41be03b00d2f7-77d667ec487sm4166226a12.75 - gsmtp

at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:932)
at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:843)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:748)
at javax.mail.Service.connect(Service.java:388)
at javax.mail.Service.connect(Service.java:246)
at javax.mail.Service.connect(Service.java:195)
at javax.mail.Transport.send0(Transport.java:254)
at javax.mail.Transport.send(Transport.java:124)
at Servico.Email2.main(Email2.java:67)

C:\Users\Anderson Azevedo\AppData\Local\NetBeans\Cache\15\executor-snippets\run.xml:111: The following error occurred while executing this line:
C:\Users\Anderson Azevedo\AppData\Local\NetBeans\Cache\15\executor-snippets\run.xml:68: Java returned: 1
BUILD FAILED (total time: 1 second)

MINHA CLASSE E-MAIL:

package Servico;

import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
*

  • @author JANDERSON
    */
    public class Email2 {

    public static void main(String[] args) {

     final String username = "e-mail";
     final String password = "senha";
     
     Properties props = new Properties();
     /**
      * Parâmetros de conexão com servidor Gmail
      */
     props.put("mail.smtp.host", "smtp.gmail.com");
     props.put("mail.smtp.socketFactory.port", "465");
     props.put("mail.smtp.socketFactory.class",
             "javax.net.ssl.SSLSocketFactory");
     props.put("mail.smtp.auth", "true");
     props.put("mail.smtp.port", "465");
    
     Session session = Session.getDefaultInstance(props,
             new javax.mail.Authenticator() {
         protected PasswordAuthentication getPasswordAuthentication() {
             return new PasswordAuthentication("e-mail", "senha do e-mail");
         }
     });
    
     /**
      * Ativa Debug para sessão
      */
     session.setDebug(true);
    
     try {
    
         Message message = new MimeMessage(session);
         message.setFrom(new InternetAddress("e-mail"));
         //Remetente
    
         Address[] toUser = InternetAddress //Destinatário(s)
                 .parse("destinatário");
    
         message.setRecipients(Message.RecipientType.TO, toUser);
         message.setSubject("Enviando email com JavaMail");//Assunto
         message.setText("Enviei este email utilizando JavaMail com minha conta gmail!");
         /**
          * Método para enviar a mensagem criada
          */
         Transport.send(message);
    
         System.out.println("Feito!!!");
    
     } catch (MessagingException e) {
         throw new RuntimeException(e);
     }
    

    }
    }

Pelo que eu entendi, eu preciso autorizar que outros aplicativos menos seguros, acesse o meu e-mail. Porém, eu verifiquei nas configurações do G-mail. Essa opção não está disponiviel para a minha conta.

Alguém poderia me ajudar?

Atenciosamente,

José Anderson.

Se você configurar o Gmail no Thunderbird poderá ver os parâmetros usados e comparar com os seus.
Note também como abre uma tela adicional para permitir “aplicações não seguras”.
Eu nunca fiz isso mas sei que não basta as tradicionais credenciais IMAP.

Precisa ser o gmail? Tente outra conta de um provedor de email pequeno em um outro branch talvez para saber se está fazendo certo.

1 curtida

O Google é super restritivo quanto a isso. Se precisar mesmo usar o Gmail vai dar um certo trabalho para realizar a autenticação. Recomendo criar um e-mail em outro serviço e usá-lo. Hotmail, por exemplo, funciona tranquilamente