Resolver erro javax.correio.Autenticaçãofailedexception

não estou familiarizado com esta função para enviar correio em java. Estou a receber um erro ao enviar e-mail para repor a senha. Espero que me possa dar uma solução.

Abaixo está o meu código:

public synchronized static boolean sendMailAdvance(String emailTo, String subject, String body)
{
String host = AppConfigManager.getProperty("SENDER-EMAIL-SMTP-ADDRESS");
String userName = AppConfigManager.getProperty("SENDER-EMAIL-SMTP-USERNAME");
String password = AppConfigManager.getProperty("SENDER-EMAIL-SMTP-PASSWORD");
String port = AppConfigManager.getProperty("SENDER-EMAIL-SMTP-PORT");
String starttls = AppConfigManager.getProperty("SENDER-EMAIL-SMTP-STARTTLS");
String socketFactoryClass = AppConfigManager.getProperty("SENDER-EMAIL-SMTP-SOCKET-CLASS");
String fallback = AppConfigManager.getProperty("SENDER-EMAIL-SMTP-ALLOW-FALLBACK");                         

        try
        {
            java.util.Properties props = null;
            props = System.getProperties();
            props.put("mail.smtp.user", userName);
            props.put("mail.smtp.host", host);
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.debug", "true");

            if(!"".equals(port))
            {
                props.put("mail.smtp.port", port);
                props.put("mail.smtp.socketFactory.port", port);
            }

            if(!"".equals(starttls))
                props.put("mail.smtp.starttls.enable",starttls);

            if(!"".equals(socketFactoryClass))
                props.put("mail.smtp.socketFactory.class",socketFactoryClass);

            if(!"".equals(fallback))
                props.put("mail.smtp.socketFactory.fallback", fallback);

            Session session = Session.getDefaultInstance(props, null);
            session.setDebug(true);

            MimeMessage msg = new MimeMessage(session);
            msg.setFrom(new InternetAddress(userName));
            msg.setSubject(subject);                
            msg.setText(body, "ISO-8859-1");
            msg.setSentDate(new Date());
            msg.setHeader("content-Type", "text/html;charset=\"ISO-8859-1\"");
            msg.addRecipient(Message.RecipientType.TO, new InternetAddress(emailTo));
            msg.saveChanges();

            Transport transport = session.getTransport("smtp");
            transport.connect(host, userName, password);
            transport.sendMessage(msg, msg.getAllRecipients());
            transport.close();

            return true;
        }
        catch (Exception mex)
        {
            mex.printStackTrace();
            return false;
        }
}

lança o seguinte erro:

DEBUG: setDebug: JavaMail version 1.4.1ea-SNAPSHOT
DEBUG: getProvider() returning   javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 465, isSSL false 220 mx.google.com ESMTP m4sm5929870pbg.38 - gsmtp
DEBUG SMTP: connected to host "smtp.gmail.com", port: 465
EHLO fatin
250-mx.google.com at your service, [175.139.198.14]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH XOAUTH2 PLAIN-CLIENTTOKEN
250-ENHANCEDSTATUSCODES
250 CHUNKING
DEBUG SMTP: Found extension "SIZE", arg "35882577"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH XOAUTH2 PLAIN-CLIENTTOKEN"
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension "CHUNKING", arg ""
DEBUG SMTP: Attempt to authenticate
AUTH LOGIN
334 VXNlcm5hbWU6
YWNjb3VudEBibG9vbWluZy5jb20ubXk=
334 UGFzc3dvcmQ6
Ymxvb21pbmc=
535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8 http://support.google.com/mail/bin/answer.py?answer=14257 m4sm5929870pbg.38 - gsmtp
[STDOUT] javax.mail.AuthenticationFailedException
[STDOUT] at javax.mail.Service.connect(Service.java:319)
[STDOUT] at javax.mail.Service.connect(Service.java:169)
[STDOUT] at com.vlee.util.mail.SendMail.sendMailAdvance(SendMail.java:283)
[STDOUT] at com.vlee.servlet.ecommerce.DoMemberLogin.fnSendPwd(DoMemberLogin.java:251)
[STDOUT] at com.vlee.servlet.ecommerce.DoMemberLogin.doPost(DoMemberLogin.java:72)
Author: Bilesh Ganguly, 2013-09-13

14 answers

Devias mudar a porta para {[[1]}, Eu testei o teu código e está a funcionar bem

Se ainda ocorrer um erro, por favor mude a variável de sessão para o código abaixo:

Session session = Session.getInstance(props, new javax.mail.Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(userName, password);
    }
});
 12
Author: Ha Nguyen, 2013-09-13 04:48:00

Pode ser este problema causa pela protecção da conta do Gmail. Basta carregar abaixo do link e desactivar a segurança settings.It vai funcionar. https://www.google.com/settings/security/lesssecureapps

 69
Author: Raj008, 2014-11-04 09:13:36
 17
Author: Anil Amane, 2015-05-02 11:32:05

A maior parte do erro de excepção de Autenticationfiel ocorreu quando o sinal foi impedido, autentique-se primeiro no seu gmail e vá para https://www.google.com/settings/security/lesssecureapps e verificar ligar. Resolvi este tipo de problema assim.

 7
Author: sawpyae, 2015-09-13 15:43:04

Por omissão, a conta Gmail é altamente segura. Quando usamos o Gmail smtp da ferramenta não-gmail, o email é bloqueado. Para testar no nosso ambiente local, torne a sua conta gmail menos segura como

  1. autenticar-se no Gmail.
  2. acesse o URL como https://www.google.com/settings/security/lesssecureapps
  3. Seleccione "Ligar"
 7
Author: amitkumar, 2017-03-10 10:15:58

Alterar isto (definir a aplicação menos segura): https://www.google.com/settings/security/lesssecureapps

 3
Author: Do Nhu Vy, 2016-06-20 09:32:17

Se estiver a aceder à sua conta do gmail a partir de uma nova aplicação ou dispositivo, o Google pode estar a bloquear esse dispositivo. Tente seguir estes passos:

Para proteger a sua conta, o Google pode dificultar a entrada na sua conta se suspeitarmos que não é o Senhor. Por exemplo, a Google pode pedir informações adicionais para além do seu nome de utilizador e senha se estiver a viajar ou se tentar entrar na sua conta a partir de um novo dispositivo.

Ir para https://g.co/allowaccess a partir de um dispositivo diferente que tenha usado anteriormente para aceder à sua conta Google e seguir as instruções. Tente assinar de novo a partir da aplicação bloqueada.

 3
Author: Mate Šimović, 2016-08-30 10:24:59
Tenho recebido o mesmo erro há muito tempo.

Quando mudei a depuração da sessão para true

Session session = Session.getDefaultInstance(props, new GMailAuthenticator("[email protected]", "xxxxx"));
session.setDebug(true);

Tenho o url de Ajuda https://support.google.com/mail/answer/78754 da consola juntamente com o javax.correio.A autenticação falhou.

A partir dos degraus do link, segui cada passo. Quando eu mudei minha senha com mistura de letras, números e símbolos para ser minha surpresa, o email foi gerado sem exceção de autenticação. Nota: O meu velho a senha era menos segura.
 2
Author: Vino, 2016-01-17 09:36:51

2 possíveis razões:

  • o seu nome de utilizador pode necessitar de todo o id de E-mail '[email protected]"
  • mais óbvio: a senha está errada. Depurar para ver se a senha que está a ser usada está correcta.
 1
Author: Kedar, 2013-10-18 02:03:16
trying to connect to host "smtp.gmail.com", port 465, isSSL false

Enganou-se na configuração do smtp do gmail. O Gmail necessita de SSL. Por favor, veja tutoriais sobre como enviar e-mail via Java via SMTP Gmail, eg: http://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/

 0
Author: gerrytan, 2013-09-13 04:24:33
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendMail1 {

    public static void main(String[] args) {
        // Recipient's email ID needs to be mentioned.
          String to = "valid email to address";

          // Sender's email ID needs to be mentioned
          String from = "valid email from address";


          // Get system properties
          Properties properties = System.getProperties();

          properties.put("mail.smtp.starttls.enable", "true"); 
          properties.put("mail.smtp.host", "smtp.gmail.com");

          properties.put("mail.smtp.port", "587");
          properties.put("mail.smtp.auth", "true");
          Authenticator authenticator = new Authenticator () {
                public PasswordAuthentication getPasswordAuthentication(){
                    return new PasswordAuthentication("userid","password");//userid and password for "from" email address 
                }
            };

            Session session = Session.getDefaultInstance( properties , authenticator);  
          try{
             // Create a default MimeMessage object.
             MimeMessage message = new MimeMessage(session);

             // Set From: header field of the header.
             message.setFrom(new InternetAddress(from));

             // Set To: header field of the header.
             message.addRecipient(Message.RecipientType.TO,
                                      new InternetAddress(to));

             // Set Subject: header field
             message.setSubject("This is the Subject Line!");

             // Now set the actual message
             message.setText("This is actual message");

             // Send message
             Transport.send(message);
             System.out.println("Sent message successfully....");
          }catch (MessagingException mex) {
             mex.printStackTrace();
          }
    }

}
 0
Author: Pana Emp, 2014-09-09 09:29:55
Só para o caso de alguém vir à procura de uma solução para este problema.

Os problemas de autenticação podem ser aliviados activando a verificação de 2 passos do google para a conta em uso e criando uma senha específica do aplicativo. Tive o mesmo problema da operação.

 0
Author: Anil Muppalla, 2015-12-25 20:12:36
Eu também tinha este problema, mas a solução não tinha nada a ver com codificação. Certifique-se de que você é capaz de se conectar ao gmail. Ping smtp.gmail.com.se você não receber uma resposta, verifique suas configurações de firewall. Também pode ser um problema de definição de proxy.
 0
Author: FCoffee, 2016-09-12 19:09:54
A solução que funciona para mim tem dois passos.
  1. Primeiro Passo

    package com.student.mail;
    
    import java.util.Properties;
    
    import javax.mail.Authenticator;
    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 jorge santos
     */
    public class GoogleMail {
        public static void main(String[] args) {
            Properties props = new Properties();
            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() {
                                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("[email protected]","Silueta95#");
                }
            });
    
        try {
    
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("[email protected]"));
            message.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse("[email protected]"));
            message.setSubject("Testing Subject");
            message.setText("Test Mail");
    
            Transport.send(message);
    
            System.out.println("Done");
    
        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }
    
    }
    
  2. Activar a segurança do gmail

    https://myaccount.google.com/u/2/lesssecureapps?pli=1&pageId=none
    
 0
Author: Jorge Santos Neill, 2018-09-23 21:43:12