2010-05-14 12 views
1

Quand j'appelle la méthode d'envoi (après la mise en studentAddress), je reçois ceci:Essayer d'envoyer un courrier électronique en Java en utilisant gmail résultats toujours le nom d'utilisateur et mot de passe accepté

javax.mail.AuthenticationFailedException: 535-5.7.1 Username and Password not accepted. Learn more at
535 5.7.1 http://mail.google.com/support/bin/answer.py?answer=14257 y15sm906936wfd.10

Je suis assez sûr que la le code est correct, et 100% positif que le nom d'utilisateur et le mot de passe que j'ai entré sont corrects. Donc, est-ce quelque chose de mal avec Gmail ou quoi?

Ceci est mon code:

import java.util.*; 
import javax.mail.*; 
import javax.mail.internet.*; 

public class SendEmail { 

    private String host = "smtp.gmail.com"; 
    private String emailLogin = "[email protected]"; 
    private String pass = "xxx"; 
    private String studentAddress; 
    private String to; 
    private Properties props = System.getProperties(); 

    public SendEmail() { 
     props.put("mail.smtps.auth", "true"); 
     props.put("mail.smtps.starttls.enable", "true"); 
     props.put("mail.smtp.host", host); 
     props.put("mail.smtp.user", emailLogin); 
     props.put("mail.smtp.password", pass); 
     props.put("mail.smtp.port", "587"); 
     to = "[email protected]"; 
    } 

    public void setStudentAddress(String newAddress) { 
     studentAddress = newAddress; 
    } 

    public void send() { 
     Session session = Session.getDefaultInstance(props, null); 
     MimeMessage message = new MimeMessage(session); 
     try { 
      message.setFrom(new InternetAddress(emailLogin)); 

      InternetAddress[] studentAddressList = {new InternetAddress(studentAddress)}; 
      message.setReplyTo(studentAddressList); 
      message.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); 
      message.setSubject("Test Email"); 
      message.setText("This is a test email!"); 
      Transport transport = session.getTransport("smtps"); 
      transport.connect(host, emailLogin, pass); 
      transport.sendMessage(message, message.getAllRecipients()); 
      transport.close(); 
     } catch (MessagingException me) { 
      System.out.println("There has been an email error!"); 
      me.printStackTrace();   
     } 
    } 

} 

Toutes les idées ...

+0

Pour rétrécir quelque chose, si vous changez de .getTransport ("smtp") ça marche? – Serapth

+0

En fait, je l'ai juste compris, le code est bien. J'ai utilisé un compte Gmail différent de celui avec lequel je testais et cela a fonctionné parfaitement. Donc, pour une raison quelconque, le compte Gmail que je viens de mettre en place il ya une heure pour tester ce code ne fonctionne pas correctement? J'ai activé la pop dans ses paramètres, donc je ne sais pas pourquoi c'est le cas. – Thaeos

Répondre

0

était une question à voir avec gmail, pas le code!

0

il y a certaines restrictions pour un compte gmail à utiliser dans un programme que le vôtre. L'un d'entre eux est le compte devrait avoir quelques jours et je suppose que c'est 1 jours.

2

J'ai eu le même problème exactement (à l'aide-email qui semble commun en effet plus facile que d'utiliser java.mail). Ce qui a résolu le problème pour moi était en train de changer le nom d'utilisateur d'inclure le [email protected] au lieu d'un « utilisateur ». Probablement une erreur nouvelle b, mais peut-être d'autres peuvent bénéficier.

3

Il y a deux solutions pour cela:

Vous pouvez générer l'application par mot de passe spécifique le lien-à-dire « https://accounts.google.com/IssuedAuthSubTokens » et utiliser l'application générée mot de passe spécifique en place votre mot de passe d'origine . Je l'ai fait et son travail

ou

La raison pour laquelle l'exception (javax.mail.AuthenticationFailedException: 535-5.7.1 mot de passe spécifique à l'application requise) se produit est que vous avez peut-être activé le 2- étape de vérification de votre compte Gmail. Si vous utilisez un compte dans lequel vous n'activez pas la validation en deux étapes, vous pouvez l'envoyer par votre mot de passe original. J'ai également essayé ceci et son fonctionnement bien.