Bonjour,
Voila je me sert de cette class pour envoyer des mails
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package mailsna;
import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Iterator;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
 
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.swing.JLabel;
import javax.swing.JTextArea;
/**
 *
 * @author 
 */
public class EnvoiTLS {
    static Properties mailServerProperties;
    static Session getMailSession;
    static MimeMessage generateMailMessage;
    public  boolean generateAndSendEmail(String Aqui,String Votre_mail,String Ch_Votre_Mail) throws AddressException, MessagingException, InterruptedException {
 
boolean mail_ok = false; 
try{
String host = "smtp.gmail.com";
String username = "XXXX";
String password = "XXXXX";
String port = "465";
 
String to = Aqui;
String subject = "Test d'envoi automatique par Java";
String content = Votre_mail;
 
 
InternetAddress[] addresses = InternetAddress.parse(to, true);
InternetAddress fromAddress = new InternetAddress(username);
 
Properties props = new Properties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.user", username);
props.put("mail.smtp.port", port);
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.debug", "true");
props.put("mail.smtp.socketFactory.port", port);
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
 
System.out.println("creating session");
Session session = Session.getDefaultInstance(props, null);
 
System.out.println("creating message");
MimeMessage message = new MimeMessage(session);
message.setText(content);
message.setSubject(subject);
message.setFrom(fromAddress);
message.setRecipients(Message.RecipientType.TO,addresses);
message.setHeader("Disposition-Notification-To",fromAddress.getAddress());
message.setHeader("Return-Receipt-To",fromAddress.getAddress());
FileDataSource fds = new FileDataSource(Ch_Votre_Mail);         
message.setDataHandler(new DataHandler(fds));
 
Transport transport = session.getTransport("smtp");
 
transport.connect(host, username, password);
 
transport.sendMessage(message, message.getAllRecipients());
 
transport.close();
 
mail_ok = true;
}catch(Exception et){
   mail_ok = false; 
}
finally{
return mail_ok;
}
    }
}
et dans ma class pricipale:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
private void jBEnvActionPerformed(java.awt.event.ActionEvent evt) {                                      
       String nonparti = "";
       String bienpa = "";
       jTextArea1.setText("EN COURS");
       boolean parti = false;
        try {
            setCursor(Cursor.WAIT_CURSOR);
            recupMsg();
            for(int m = 0; m < ListMail.size();m++){
                boolean nonenvoyer = false;
               String nom_Mail = ListMail.get(m).toString().toLowerCase().replaceAll(".txt", "");
                for(int dest = 0;dest <Destinataire.size();dest++){
                    String nom_dest = Destinataire.get(dest).toString().toLowerCase();
 
                    if(nom_dest.split(";")[0].contains(nom_Mail)){
                        EnvoiTLS envoi = new EnvoiTLS();
                        // bienpa 
                        jTextArea1.setText("Envoie du mail de " + nom_Mail +" à " + nom_dest.split(";")[1] + ":") ;
                       parti =  envoi.generateAndSendEmail(nom_dest.split(";")[1], ouvrir(Ch_Mail + "\\" + ListMail.get(m).toString()), Ch_Mail + "\\" + ListMail.get(m).toString() );
                       if(parti)jTextArea1.setText(" Ok\n"); //bienpa += " Ok\n" ;
                       else{
                           jTextArea1.setText( " erreur\n");
                          // bienpa += " erreur\n" ;
                       }
                        nonenvoyer = true;
                    }                       
                }
               if(!nonenvoyer)
                    nonparti+= ListMail.get(m) + "\n";  
               jTextArea1.setText(bienpa);
            }
            setCursor(Cursor.DEFAULT_CURSOR);
        } catch (IOException ex) {
            Logger.getLogger(Vue.class.getName()).log(Level.SEVERE, null, ex);
        } catch (AddressException ex) {
            Logger.getLogger(Vue.class.getName()).log(Level.SEVERE, null, ex);
        } catch (MessagingException ex) {
            Logger.getLogger(Vue.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InterruptedException ex) {
            Logger.getLogger(Vue.class.getName()).log(Level.SEVERE, null, ex);
        }
        if(nonparti!="") System.out.println(nonparti);
    }
Le fait de pas avoir de thread empêche mon Jtextarea de s'incrémenter.
Il n'y a qu'a la fin de ma boucle un "Ok" qui s'affiche.
j'ai trouvée une parade avec une variable String que j’implémente a chaque tour de boucle pour enfin a la sorti du for l’écrire dans mon Jtextexarea mais ça ne fait pas très propre.
Je souhaiterais savoir comment insérer un thread et ou.
Cordialement.