je suis en train d'envoyer des messages de cette façon:Comment corriger Protocole incorrect: envoi de courrier en utilisant null javax.mail
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...
i 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 résoudre? Est-ce que quelqu'un peut m'aider? Merci!! :)
EDIT:
Si je crée un principal et le lancement de cette méthode pour envoyer du courrier, il fonctionne bien! Mon problème Borns après avoir lu le courrier dans le dossier mail:
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!
}
}
Je pensais que l'exception borns parce que je suis magasin ouvert pour obtenir le courrier de la boîte de réception, donc je modifier ainsi:
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 ....
SOLVED ainsi:
i modifié cette ligne
Session mailSession = Session.getDefaultInstance(props, null);
à
Session mailSession = Session.getInstance(props);
Ouais, il n'y a qu'une seule instance 'Session' par défaut. Si vous essayez d'obtenir celui par défaut après qu'il a été récupéré avec un authentificateur différent, il échouera avec l'erreur que vous avez vu. – dkarp
Pour moi la solution ici a fonctionné http://stackoverflow.com/questions/17590762/javax-mail-nosuchproviderexception-invalid-protocol-null – Madhu