Envoi mails en java,extraction des emails depuis un fichier txt,envoi emails sous différents langues
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:
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:
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:
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.