Comment corriger Protocole incorrect: null envoi de mail à l'aide de javax.mail
je vais essayer d'envoyer un mail de cette manière:
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", "out.alice.it");
props.setProperty("mail.user", "[email protected]");
props.setProperty("mail.password", "*****");
Session mailSession = Session.getDefaultInstance(props, null);
Transport transport = mailSession.getTransport();
MimeMessage message = new MimeMessage(mailSession);
message.setFrom(new InternetAddress("Host", "Name"));
Sur la ligne Transport transport...
- je récupérer cette erreur:
javax.mail.NoSuchProviderException: Invalid protocol: null
at javax.mail.Session.getProvider(Session.java:440)
at javax.mail.Session.getTransport(Session.java:659)
at javax.mail.Session.getTransport(Session.java:640)
at javax.mail.Session.getTransport(Session.java:626)
at Mail.sendMail(Mail.java:151)
Comment puis-je le résoudre? Quelqu'un peut-il m'aider? Merci!! 🙂
EDIT:
Si je crée un principal et le lancement de la méthode pour envoyer un mail, ça fonctionne bien!
Mon problème nés après j'ai lu le mail dans le dossier courrier:
Properties properties = System.getProperties();
properties.setProperty("mail.store.protocol", "imap");
Session session = Session.getDefaultInstance(properties, null);
Store store = session.getStore("pop3");
store.connect("pop3.domain.it", "[email protected]", "****");
Folder inbox = store.getFolder("inbox");
FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
inbox.open(Folder.READ_ONLY);
Message messages[] = inbox.search(ft);
for(Message message:messages) {
if(message.getFrom()[0].toString().equals("aMail")){
sendMail(message.getFrom()[0].toString());//Error!
}
}
J'ai Pensé à l'exception nés cause j'ai ouvert le magasin pour obtenir la boîte de réception mail alors j'ai modifier de cette façon:
ArrayList<String> reply = new ArrayList<String();
for(Message message:messages) {
if(message.getFrom()[0].toString().equals("aMail")){
reply.add(message.getFrom()[0].toString());
}
}
store.close();
for(String mail : reply){
sendMail(mail); //ERROR AGAIN!
}
très étrange....
RÉSOLU DE CETTE FAÇON:
j'ai modifié cette ligne
Session mailSession = Session.getDefaultInstance(props, null);
à
Session mailSession = Session.getInstance(props);
Ouais, il y a un seul défaut
Pour moi la solution ici travaillé stackoverflow.com/questions/17590762/...
Session
instance. Si vous essayez d'obtenir la valeur par défaut une fois qu'elles ont été récupérées avec une autre authentificateur, il va échouer avec l'erreur que vous avez vu.Pour moi la solution ici travaillé stackoverflow.com/questions/17590762/...
OriginalL'auteur JackTurky | 2012-06-29
Vous devez vous connecter pour publier un commentaire.
vous pourriez essayer une autre façon:
voir modifier pls.. 🙂
Je ne sais pas pourquoi mais quand j'envoie un email par l'intermédiaire d'une classe principale c'est pas le problème, mais quand j'ai envoyé un mail via le jsf de l'application, il doit définir un protocole smtp.
OriginalL'auteur Pavel K.
J'ai été faire cette même erreur, et mon problème est que j'ai oublié d'inclure:
OriginalL'auteur Dr.Octoboz