connexion a un server mail via TLS/SSL
Bonjour a tous;
il y a une semaine que je boucle sur un probleme de connection a un server mail en mode TLS et SSL mais sans resultas.j'ai pas compris l'astuce.
mon bout de code:
public void sendmail(){
try {
//System.setProperty("javax.net.debug", "all");
String protocol = "smtp";
String mailSmtpHost = "mon_servermail";
String socketFactory = "javax.net.ssl.SSLSocketFactory";
String port = "25";
String login = "toto";
String password = "****";
String from = "toto@****.***";
String smtpAuth = "true";
Properties props = new Properties();
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.auth", smtpAuth);
props.put("mail.smtp.socketFactory.class", socketFactory);
props.put("mail.smtp.socketFactory.port", port);
props.put("mail.smtp.port", port);
//props.put("mail.smtp.auth.plain.disable" ,"true");
// Creating mail session
session = Session.getDefaultInstance(props, new Authenticator() {
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
return new javax.mail.PasswordAuthentication(login, password);
}
});
URLName url = new URLName(protocol, mailSmtpHost, Integer.parseInt(port), "", userName, password);
com.sun.mail.smtp.SMTPSSLTransport transport = new com.sun.mail.smtp.SMTPSSLTransport(session, url);
transport.setStartTLS(true);
// Constructing Message object
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse("xxxx@xxxx.xx", false));
msg.setSubject("test");
msg.setText("mail for test");
Transport.send(msg);
transport.close();
}
catch (MessagingException me)
{
me.printStackTrace();
System.out.println("Unable to send mail");
}
}
quelqu'un pourra m'aider?
merci.
Connection au serveur de mail sécurisé
Bonjour,
Après beaucoup de temps passé à rechercher une solution à mon problème au travers de différents forums, je me tourne vers celui-ci pour savoir si l'un d'entre vous aurait une solution, une idée, une hypothèse.. bref n'importe quoi qui puisse me faire avancer sur mon problème exposé ci après.
J'utilise Javamail pour me connecter à un serveur de mail (création d'un POPClientAuthenticator, récupération de l'instance de la Session et récup du "magasins" d'email (Store) avant de faire un connect().).
Avec le protocole pop3 "normal", aucun souci, je récupère les mails présents sur le serveur.
Dès lors que je veux passer en mode sécurisé (SSL), une exception est levée lors de la phase de connection de type
"javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found"..
Un certificat est utilisé sur le serveur. Je l'ai donc aussi ajouté au fichier 'cacerts' du jdk avec l'outil keytool. c'est pour cela que je ne comprend pas le message d'erreur. C'est comme s'il ne trouvait pas le certificat...
En gros, voici ce que je fais :
// Paramétrage de la session
parametres = System.getProperties();
parametres.put(POPClient.JAVAMAIL_SECURED_HOST,
POPClient.POPS_HOST); //mon serveur sécurisé
POPClientAuthenticator authentificateur = new
POPClientAuthenticator(POPClient.POPS_USER, POPClient.POPS_PASSWORD);
//user et password associé au serveur sécurisé
session = Session.getInstance(parametres, authentificateur);
try {
store =
session.getStore(POPClient.JAVAMAIL_SECURED_STORE); //pop3s
store.connect(); -> Exception !!
...
Je ne sais plus du tout quoi essayé..
Merci d'avance pour vos suggestions, idées, questions?
Fabrice