Je construis une application à l'aide de Java pour lire des courriels. Et cela fonctionnait sans aucune erreur. Mais tout à coup aujourd'hui, il est fait une erreur comme celle-ci. Je ne peux pas comprendre comment résoudre ce problème. Je n'ai pas mis l'authentification à deux voies. Et aussi j'ai mis une application moins sécurisée autorisée. Donc, je ne peux pas comprendre ce qui ne va pas. Quelqu'un peut m'aider? J'apprécie grandement ça. P> Voici le code que j'utilise, p>
3 Réponses :
Mon extrait de travail a l'air ci-dessous:
import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Folder; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.NoSuchProviderException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Store; public class CheckingMails { public static void check(String host, String user, String password) { try { // create properties field Properties properties = new Properties(); properties.put("mail.pop3s.host", host); properties.put("mail.pop3s.port", "995"); properties.put("mail.pop3s.starttls.enable", "true"); // Setup authentication, get session Session session = Session.getInstance(properties, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user, password); } }); // session.setDebug(true); // create the POP3 store object and connect with the pop server Store store = session.getStore("pop3s"); store.connect(); // create the folder object and open it Folder emailFolder = store.getFolder("INBOX"); emailFolder.open(Folder.READ_ONLY); // retrieve the messages from the folder in an array and print it Message[] messages = emailFolder.getMessages(); System.out.println("messages.length---" + messages.length); for (int i = 0, n = messages.length; i < n; i++) { Message message = messages[i]; System.out.println("---------------------------------"); System.out.println("Email Number " + (i + 1)); System.out.println("Subject: " + message.getSubject()); System.out.println("From: " + message.getFrom()[0]); System.out.println("Text: " + message.getContent().toString()); } // close the store and folder objects emailFolder.close(false); store.close(); } catch (NoSuchProviderException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { String host = "pop.gmail.com"; String username = "abc@gmail.com";// change accordingly String password = "*****";// change accordingly check(host, username, password); } }
J'ai à nouveau la même erreur. J'ai ajouté votre code et conserver cela aussi comme le même store.connect (hôte, nom d'utilisateur, mot de passe); code>
@TechGuy Cela fonctionne pour moi, bien que je n'ai aucun paramètre dans la méthode de connexion. Seulement Store Store = Session.getStore ("POP3S"); Store.connect (); code>
@TechGuy Vous pouvez vous connecter à votre compte Gmail et vérifier si les paramètres de sécurité sont désactivés.
J'ai essayé votre code. Mais cela me donne ce Échec de connexion, aucun mot de passe spécifié? Code>
Les paramètres de sécurité signifient que vous permettent d'autoriser des applications moins sécurisées?
@TechGuy Oui, je voulais dire permettre des applications moins sécurisées. Désolé, si cela n'a pas aidé. Je vais éditer ma réponse et poster la classe que j'ai utilisée qui fonctionne parfaitement pour moi. Vous pouvez essayer de trouver si vous manquez quelque chose. Sinon, j'ai peur de ne pouvoir m'empêcher.
Merci pour votre réponse. Mais il continue à obtenir l'erreur à nouveau. Je ne sais pas pourquoi. J'ai essayé avec imap code> mais cela n'a pas non plus fonctionné.
Mon problème était que le même code travaillait sur le local mais non sur le nuage distant (pipeline Bitbucket), bien que je définissais l'activation moins sécurisée. Je l'ai résolu par une vérification de 2 étapes activée et créez un mot de passe de l'application. Puis utilisé ce mot de passe de l'application au lieu du mot de passe normal dans le code. P>
Vous pouvez également vérifier le lien suivant: https://docs.maildev.com/article/121-gmail-web-login-requiped-Error--Aser78754-Failure P>
Veuillez expliquer où le lien va, comment cela se rapporte à la question et comment cela fonctionne.
Avez-vous suivi le lien dans le message d'erreur? Avez-vous essayé tous i> les étapes décrites? Que s'est-il passé lorsque vous avez essayé chacune de ces étapes?
Google a cassé quelque chose lié à la prise d'utilisation de POP3 de certains comptes. La même chose est arrivée à moi et à diverses personnes partout. Nous attendons un correctif.
@szako Pensez-vous que c'est la raison de ce que nous sommes confrontés maintenant? Quand vont-ils le réparer ou tout ce que nous pouvons faire pour éviter cela?
On dirait que Google résolue le problème, au moins pour moi (et pour d'autres que je vois dans des forums). Si c'était la cause, vous devriez essayer à nouveau du code. Autres sources liées J'ai trouvé: 1 , 2 , 3
@szako oui la mine aussi corrigé. Maintenant, je peux lire les emails. Merci pour l'information.
@Billshannon Oui, j'ai essayé toutes les étapes mais celles-ci ne résolvent pas le problème. Mais maintenant, le problème est corrigé. Merci pour le soutien.
Eh bien, ne nous gardez pas en suspens! Dites-nous exactement ce que c'est que corrigé le problème!
@Billshannon, je pense que Szako a raison. J'ai fait des changements de code et examinez mes paramètres Google, mais ils n'ont pas corrigé mon problème. J'ai changé mon code dans l'original et hier matin, j'ai rendu le programme à nouveau. Ensuite, cela fonctionne parfaitement. Donc, je ne sais pas ce qui s'est passé exactement, mais je pense que les informations m'a donné par Szako sont correctes.
Vous pouvez fermer la question maintenant je pense.
@szako ne trouve pas la bonne option de signaler à fermer.
@TECH GUY: a fait une réponse.
@szako a accepté la réponse. Merci pour votre soutien.