Bonjour,
Depuis ce matin ,j'ai un soucis concernant l'envoi des emails en java sous différentes langues.
pour le test sur la langue j'extrais depuis la base le champ langue ,pour se servir après pour le test d'envoi(la liste des destinataires est extraite dans une méthode depuis une BDD mysql ,et cette liste est écrite sur un fichier:dest.txt) .
Concernant le contenu du mail ,il est placé dans un fichier txt(mail1.txt,mail2.txt,mail3.txt et chaque fichier contient le mail sous une langue)
ma question est comment tester sur ce champ(champ langue) récupéré depuis la BD,et placer le traitement d'envoi de mail selon ce dernier.
ici je récupéres le champ langue dans une classe utility:
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
public static void lireEnBase() throws IOException{
    
   		// Information d'accès à la base de données
		String url = "jdbc:mysql://localhost:3306/webagence";
		String login = "root";
		String passwd = "";
		Connection cn =null;
		Statement st =null;
		ResultSet rs =null;
		 File file = new File(".\\dest1.txt");
                try {
                   
			// Etape 1 : Chargement du driver
			Class.forName("com.mysql.jdbc.Driver");
			// Etape 2 : récupération de la connexion
			cn = DriverManager.getConnection(url, login, passwd);
			// Etape 3 : Création d'un statement
			st = cn.createStatement();
			String sql1 = "SELECT login,lang FROM questionnaire  where etape <> '5'  AND DATEDIFF(NOW(),dateEtape)=4; ";
			// Etape 4 : exécution requête
			rs = st.executeQuery(sql1);
                        affiche("Exécution 1ere requête................");
			// Si récup données alors étapes 5 (parcours Resultset)
                         
                          PrintWriter printWriter = null;
                          printWriter = new PrintWriter(file);

			while (rs.next()) {
                            
                             System.out.println(rs.getString("login"));
                             String result1 = rs.getString("login");
                             String langue = rs.getString ("lang");
                             //ajouter le traitement ecriture dans le fichier txt 
                             
                             printWriter.println(result1 +"\n");
                            
                             affiche("affichage result1: "+ result1);
                              affiche("affichage langue: "+ langue);
                       	}
                          printWriter.close();
                           
                        
                        
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} finally {
			try {
			// Etape 6 : libérer ressources de la mémoire.
				cn.close();
				st.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}}
après il y a la classe qui envoi les emails:
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
  public static void envoiMails(String [] mails){
        // Vérification du nombre d'arguments
        if (mails.length != 4) 
        {
          System.out.println ("usage: java from smtphost mailfile destfile");
          System.exit (1); 
        }
       // Récupération des arguments
        String from     = mails [0];
        String smtphost = mails [1];
        String mailFile = mails [2];
        String destFile = mails [3];
 
 
        try 
        {          // Ouverture du fichier contenant le sujet + le message à envoyer
          // et du fichier contenant les destinataires
         BufferedReader mailReader = new BufferedReader (new FileReader (mailFile));
         BufferedReader destReader = new BufferedReader (new FileReader (destFile));
          // Lecture du sujet (première ligne)
          String  subject = mailReader.readLine ();
          affiche("affichage objet mail .............."+subject);
          // Lecture du contenu du message
         String  content = "";
          String  line;
          while ((line = mailReader.readLine ()) != null)
           content += line + "\n";
 
          mailReader.close ();
 
          // Création d'un ensemble de propriétés
          // et ouverture d'une session
          String host = "host";
          Properties props = new Properties();
          props.setProperty("mail.smtp.host", host);
 
          props.put("mail.smtp.auth", "true");
          props.put ("mail.smtp.ssl.trust", host);
          props.put("mail.smtp.starttls.enable", "true");
          props.put("mail.smtp.host", host);
          props.put("mail.smtp.port", "587");
         //pour une connection SSL à vérifier
         // props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
 
          props.put("mail.smtp.socketFactory.port", "587");
          //ajoutée lors erreur SSL
          props.put("mail.smtp.socketFactory.fallback", "true");
          affiche("+++++++++++++++++++++++++++++props"+props.toString());
 
          Session session = Session.getDefaultInstance(props,
			new javax.mail.Authenticator() {
				protected PasswordAuthentication getPasswordAuthentication() {
					return new PasswordAuthentication("login","passs");
				}
			});
          //SMTP utilise une connexion sécurisée
          String to;
          // Parcours de la liste de tous les destinataires 
          while ((to = destReader.readLine ()) != null)
            // Si le premier caractère est #, c'est une remarque
            if  (to.length () > 0
                 && to.charAt (0) != '#')
              try 
              {
 
                  // Création d'un message
                Message message = new MimeMessage (session);
 
                // Modification de l'expéditeur
                message.setFrom (new InternetAddress (from));
 
                // Modification du destinataire
                InternetAddress [] address =
                  {new InternetAddress (to)};        
                message.setRecipients (Message.RecipientType.TO, address);
 
                // Modification du sujet
                message.setSubject (subject);
 
                // Modification du contenu en texte brut
                message.setContent (content, "text/plain;charset=utf-8");
 
                // Envoi du message
                affiche("Essai d'envoi mail a :....."+to);
                Transport.send (message);
               logger.log(Level.INFO, " Message envoye a :",to);
 
              } 
              catch (MessagingException mex) 
              {
                mex.printStackTrace ();
              }
        }
        catch (IOException ex)
        {
            logger.log(Level.SEVERE, "Probleme d'acces a:",mailFile+ " ou " + destFile);
 
        }
 
 
      }
et finalement ces 2 méthodes sont appellés dans le main comme ceçi:
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
public static void main(String[] args) throws IOException {
 
        //envoi 1er Mail de relance
 
	    lireEnBase();//extraction des emails concernés et champ langue pour chaque email
            logger.log(Level.INFO, " Données extractées depuis la BD et écrites dans le fichier dest1");
 
 
            String[] mails = new String[4];
            mails[0]="agencedirecte@......";
            mails[1]="host"; 
            mails[3]="C:\\Users\\belkaika\\Documents\\NetBeansProjects\\BatchEmailingRelances\\dest1.txt";
//            if ()
            mails[2]="C:\\Users\\belkaika\\Documents\\NetBeansProjects\\BatchEmailingRelances\\mail1.txt";
 
            envoiMails(mails);
Merci de m'aviser sur ce point SVP.