web-dev-qa-db-fra.com

JavaMail avec Gmail: 535-5.7.1 Nom d'utilisateur et mot de passe non acceptés

J'obtiens cette erreur lorsque j'essaie d'envoyer un courrier à l'aide de l'API JavaMail. Je suis sûr que le nom d'utilisateur et le mot de passe sont corrects à 100%. Le compte Gmail que je connecte est un compte plus ancien, car ils disent qu'il faut du temps pour qu'il fonctionne avec de nouveaux comptes.

 DEBUG SMTP RCVD: 535-5.7.1 Nom d'utilisateur et mot de passe non acceptés. En savoir plus sur 
 
 535 5.7.1 http://mail.google.com/support/bin/answer.py?answer=14257 x35sm3011668 
 Wfh.6 
 
 javax.mail.SendFailedException: l'envoi a échoué; 
 exception imbriquée est: 
 javax.mail.AuthenticationFailedException 
 à javax.mail.Transport.send0 (Transport .Java: 218) 
 À javax.mail.Transport.send (Transport.Java:80) 
 À Main. (Main.Java:41) 
 À Main.main ( Main.Java:51)

et voici mon code:

import javax.mail. *; 
 import javax.mail.internet. *; 
 import Java.util. *; 
 
 classe publique Main 
 {
 String d_email = "[email protected]", 
 D_password = "pass", 
 D_Host = "smtp.gmail.com", 
 D_port = "465", 
 M_to = "[email protected]", 
 M_subject = "Testing", 
 M_text = "testing email."; 
 
 public Main () 
 {
 Propriétés props = nouvelles propriétés (); 
 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.SSLSocketFact ory "); 
 props.put (" mail.smtp.socketFactory.fallback "," false "); 
 
 SecurityManager security = System.getSecurityManager (); 
 
 essayez 
 {
 Authenticator auth = new SMTPAuthenticator (); 
 Session session = Session.getInstance (props, auth); 
 session .setDebug (true); 
 MimeMessage msg = nouveau 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 (); 
} 
 [.___ _.] classe privée SMTPAuthenticator étend javax.mail.Authenticator 
 {
 public PasswordAuthentication getPasswordAuthentication () 
 {
 return new PasswordAuthentication (d_email, d_password); 
} 
} 
} 
18
simplyblue

L'extrait de code donné fonctionne bien sur mon compte Gmail, donc ce problème se situe ailleurs. Avez-vous suivi le lien donné dans le message d'erreur ? Il contient les conseils suivants:

  • Assurez-vous que vous avez entré votre adresse e-mail complète (par exemple, [email protected])
  • Entrez à nouveau votre mot de passe pour vous assurer qu'il est correct. Gardez à l'esprit que les mots de passe sont sensibles à la casse.
  • Assurez-vous que votre client de messagerie n'est pas configuré pour vérifier les nouveaux messages trop souvent. Si votre client de messagerie recherche de nouveaux messages plus d'une fois toutes les 10 minutes, il se peut que votre client demande à plusieurs reprises votre nom d'utilisateur et votre mot de passe.

Surtout le dernier point est important. Google est très strict à cet égard. Si vous essayez de connecter Gmail par exemple plus de 10 fois en une minute par programme, alors vous pouvez déjà être bloqué. Ayez un peu de patience, après un certain temps, il sera débloqué.

Si vous souhaitez plus de liberté pour envoyer des e-mails, je vous recommande de rechercher un hôte de messagerie dédié ou de configurer votre propre serveur de messagerie, comme Apache James ou Microsoft Exchange. J'ai déjà répondu à cette question en détail dans l'une de vos questions précédentes.

11
BalusC

J'ai eu le même problème: je fais référence à ceci lien , j'ai suivi les étapes ci-dessous, cela a fonctionné pour moi.

Par défaut, le compte Gmail est hautement sécurisé. Lorsque nous utilisons gmail smtp à partir d'un outil non gmail, le courrier électronique est bloqué. Pour tester dans notre environnement local, rendez votre compte gmail moins sécurisé car

  1. Connectez-vous à Gmail.
  2. Accédez à l'URL en tant que https://www.google.com/settings/security/lesssecureapps
  3. Sélectionnez "Activer"
21
Laxman G

J'ai rencontré exactement le même problème, pour moi, la raison est que j'ai activé vérification en 2 étapes sur mon compte gmail.

Après avoir généré un nouveau mot de passe spécifique à l'application et l'utiliser dans mon Java, ce problème "535 5.7.1" a disparu.

Vous pouvez générer un nouveau mot de passe spécifique à l'application après cela guide officiel de Google .

8
Jifeng Zhang

J'ai rencontré le même problème bien que mon nom d'utilisateur et mon mot de passe soient corrects, mais après quelques recherches, j'ai pu envoyer des e-mails via des applications en activant Accès moins sécurisé aux applications = option sur mon compte Gmail. Vous pouvez trouver cette fonctionnalité sous l'option sécurité dans le menu de gauche.

Liens connexes:

2
Ashwath

J'ai le même message d'erreur et voici comment j'ai résolu le problème,

Créer un mot de passe d'application: voici comment générer un mot de passe d'application,

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.

J'ai travaillé pour une application Spring Boot et j'obtiens le mot de passe de l'application, par exemple, sadsadaffferere pour l'adresse e-mail, [email protected]. Donc, je dois configurer les propriétés de l'application comme suit,

# 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]

Tout fonctionne bien après

1
Arefe

Si la même information d'identification fonctionnait plus tôt et qu'elle a cessé de fonctionner, la principale raison de ce problème est la non-correspondance/modification du mot de passe sur le client gmail et non mise à jour dans Jenkins ou un autre serveur CI. Si ce n'est pas le cas, vérifiez les raisons mentionnées par @BalusC

0
Gaurav Dalal