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:
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 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(); } }}
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
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); } }
Merci de m'aviser sur ce point SVP.
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);
Partager