JavaMail con Gmail: 535-5.7.1 Nome utente e password non accettati

Ottengo questo errore quando provo a inviare una mail usando l’API JavaMail. Sono sicuro che il nome utente e la password sono corretti al 100%. L’account Gmail che sto connettendo è un account più vecchio, perché dice che ci vuole del tempo perché funzioni con nuovi account.

 DEBUG SMTP RCVD: 535-5.7.1 Nome utente e password non accettati.  Scopri di più a

 535 5.7.1 http://mail.google.com/support/bin/answer.py?answer=14257 x35sm3011668
 wfh.6

 javax.mail.SendFailedException: invio fallito;
   l'eccezione annidata è:
         javax.mail.AuthenticationFailedException
         a javax.mail.Transport.send0 (Transport.java:218)
         a javax.mail.Transport.send (Transport.java:80)
         a Main. (Main.java:41)
         a Main.main (Main.java:51)

e questo è il mio codice:

 import javax.mail. *;  import javax.mail.internet. *;  import java.util. *;  public class Main {String d_email = "[email protected]", d_password = "pass", d_host = "smtp.gmail.com", d_port = "465", m_to = "[email protected]", m_subject = " Test ", m_text =" verifica email. ";  public Main () {Properties props = new Properties ();  props.put ("mail.smtp.user", d_email);  props.put ("mail.smtp.host", d_host);  props.put ("mail.smtp.port", d_port);  props.put ( "mail.smtp.starttls.enable", "true");  props.put ("mail.smtp.auth", "true");  props.put ("mail.smtp.debug", "true");  props.put ("mail.smtp.socketFactory.port", d_port);  props.put ("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");  props.put ("mail.smtp.socketFactory.fallback", "false");  SecurityManager security = System.getSecurityManager ();  prova {Authenticator auth = new SMTPAuthenticator ();  Sessione sessione = Session.getInstance (props, auth);  session.setDebug (true);  MimeMessage msg = new MimeMessage (session);  msg.setText (m_text);  msg.setSubject (m_subject);  msg.setFrom (new InternetAddress (d_email));  msg.addRecipient (Message.RecipientType.TO, new InternetAddress (m_to));  Transport.send (msg);  } catch (Exception mex) {mex.printStackTrace ();  }} public static void main (String [] args) {Main blah = new Main ();  } class privata SMTPAuthenticator estende javax.mail.Authenticator {public PasswordAuthentication getPasswordAuthentication () {return new PasswordAuthentication (d_email, d_password);  }}} 

Lo snippet di codice indicato funziona bene sul mio account Gmail, quindi questo problema si trova altrove. Hai seguito il link indicato nel messaggio di errore ? Contiene i seguenti suggerimenti:

  • Assicurati di aver inserito il tuo indirizzo email completo (ad es. [email protected])
  • Reinserire la password per assicurarsi che sia corretta. Tieni presente che le password fanno distinzione tra maiuscole e minuscole.
  • Assicurati che il tuo client di posta non sia impostato per controllare la nuova posta troppo spesso. Se il tuo client di posta controlla i nuovi messaggi più di una volta ogni 10 minuti, il tuo cliente potrebbe richiedere ripetutamente il tuo nome utente e password.

Soprattutto l’ultimo punto è importante. Google è molto severo in questo. Se stai cercando di connettere Gmail ad esempio più di 10 volte in un minuto a livello di programmazione, potresti già essere bloccato. Abbi un po ‘di pazienza, dopo un po’ di tempo sarà sbloccato.

Se desideri più libertà nell’invio di e-mail, ti consiglio di cercare un host di posta dedicato o di configurare il tuo server di posta, come Apache James o Microsoft Exchange. Ho già risposto in dettaglio in una delle tue precedenti domande.

Ho riscontrato lo stesso identico problema, per me il motivo è che ho triggersto la verifica in due passaggi sul mio account Gmail.

Dopo aver generato una nuova password specifica per l’applicazione e averla utilizzata nella mia applicazione java, questo problema “535 5.7.1” è scomparso.

Puoi generare una nuova password specifica per l’applicazione seguendo questa guida google ufficiale .

Ho lo stesso messaggio di errore ed è così che ho risolto il problema,

Crea una password per l’app: ecco come possiamo generare una password per l’app,

1. Visit your App passwords page. You may be asked to sign in to your Google Account. 2. At the bottom, click Select app and choose the app you're using. Click Select device and choose the device you're using. 3. Select Generate. 4. Follow the instructions to enter the App password (the 16 character code in the yellow bar) on your device. 5. Select Done. 

Ho lavorato per un’app di avvio Spring e ho ricevuto la password dell’applicazione, sadsadaffferere per l’indirizzo email, [email protected] . Quindi, ho bisogno di configurare le proprietà dell’app come il seguente,

 # the email settings # ------------------ spring.mail.host=smtp.gmail.com [email protected] spring.mail.password=sadsadaffferere spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.socketFactory.port=465 spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory spring.mail.properties.mail.smtp.socketFactory.fallback=false [email protected] 

Tutto funziona bene dopo