IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

[Javamail] Envoi mails et extraction mails depuis fichier txt


Sujet :

API standards et tierces Java

  1. #1
    Membre régulier
    Homme Profil pro
    Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Inscrit en
    Août 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 89
    Points : 96
    Points
    96
    Par défaut [Javamail] Envoi mails et extraction mails depuis fichier txt
    Bonjour tout le monde,

    la fonction envoiMails permette d'envoyer un mail (existant dans un fichier txt :mailfile) à plusieurs destinataires (emails dans un fichier destfile.txt),ma question est comment je pourrais adapter cette méthode pour qu'elle soit appellée depuis le main ,ou bien comment préciser l'endroit des fichiers en question dans cette méthode .

    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
    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));
              affiche("accès aux fichiers destinataires & contenu Mail");
     
              // Lecture du sujet (première ligne)
              String  subject = mailReader.readLine ();
              // 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
              Properties props = new Properties();
              props.put ("mail.smtp.host", smtphost);
              Session session = Session.getDefaultInstance (props, null);
     
              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");
     
                    // Envoi du message
                    Transport.send (message);          
                    System.out.println ("Message envoye a " + to);
                  } 
                  catch (MessagingException mex) 
                  {
                    mex.printStackTrace ();
                  }
            }
            catch (IOException ex)
            {
              System.out.println ("Probleme d'acces a " + mailFile + " ou " + destFile);
            }
     
     
          }
    Merci pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Concrètement, tu coince sur quoi? J'ai du mal à voir où est ton problème.

  3. #3
    Membre régulier
    Homme Profil pro
    Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Inscrit en
    Août 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 89
    Points : 96
    Points
    96
    Par défaut
    Bonjour,
    Merci pour votre réponse,
    j'ai un soucis dans l'envoi de mails :

    javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 25;
    nested exception is:
    java.net.ConnectException: Connection refused: connect
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
    at javax.mail.Service.connect(Service.java:295)
    at javax.mail.Service.connect(Service.java:176)
    at javax.mail.Service.connect(Service.java:125)
    at javax.mail.Transport.send0(Transport.java:194)
    at javax.mail.Transport.send(Transport.java:124)


    Merci

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    regarde la doc de gmail pour savoir comment configurer ton client. gmail n'écoute pas sur le port 25 et requiert de l'authentification.

  5. #5
    Membre régulier
    Homme Profil pro
    Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Inscrit en
    Août 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 89
    Points : 96
    Points
    96
    Par défaut
    Oui effectivement ,j'ai ajouté la partie suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Properties props = new Properties();
     props.put("mail.smtp.auth", "true");
     props.put ("mail.smtp.ssl.trust", smtphost);
     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");
     
     Session session = Session.getDefaultInstance(props,
       new javax.mail.Authenticator() {
           protected PasswordAuthentication getPasswordAuthentication() {
               return new PasswordAuthentication("login","pass");
           }
       });
    l'erreur retournée est:

    javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 587;
    PI: j'ai un kaspersky installé sur ma machine ,est ce que ça pourra être la source du problème ?

    Mercii

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Tu as surement oublier de mettre le host. Car ton message indique que tu essayes de te connecter sur ta propre machine (localhost).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre régulier
    Homme Profil pro
    Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Inscrit en
    Août 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 89
    Points : 96
    Points
    96
    Par défaut
    Bonjour,

    oui car j'été entrain de tester l'envoi via localhost ,mais maintenant j'ai précisé le host ,mais le problème pesiste.
    voila la partie setting properties:
    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
     
      String host = "outlook.eurafric.com";
              Properties props = new Properties();
              props.setProperty("mail.smtp.host", host);
     
              props.put("mail.smtp.auth", "true");
    //          props.put("mail.smtp.starttls.enable", "true");
              props.put ("mail.smtp.ssl.trust", smtphost);
              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");
     
              Session session = Session.getDefaultInstance(props,
    			new javax.mail.Authenticator() {
    				protected PasswordAuthentication getPasswordAuthentication() {
    					return new PasswordAuthentication("EAI\belkaika","pass");
    				}
    			});
    l'erreur:
    javax.mail.MessagingException: Could not connect to SMTP host: outlook.eurafric.com, port: 587;
    nested exception is:
    javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
    at javax.mail.Service.connect(Service.java:317)
    at javax.mail.Service.connect(Service.java:176)
    at javax.mail.Service.connect(Service.java:125)
    at javax.mail.Transport.send0(Transport.java:194)
    at javax.mail.Transport.send(Transport.java:124)


    Merci pour votre aide.

  8. #8
    Membre régulier
    Homme Profil pro
    Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Inscrit en
    Août 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 89
    Points : 96
    Points
    96
    Par défaut
    bonjour,

    j'ai changé le type de connection en TLS (non SSL), et j'ai changé aussi le "username" en éliminant le domaine
    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
    String host = "outlook.eurafric.com";
              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.port", "587");
             //pour une connection SSL à vérifier
              //props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
              props.put("mail.smtp.starttls.enable", "true");
              props.put("mail.smtp.socketFactory.port", "587");
     
              Session session = Session.getDefaultInstance(props,
    			new javax.mail.Authenticator() {
    				protected PasswordAuthentication getPasswordAuthentication() {
    					return new PasswordAuthentication("username","password");
    				}
    			});
    j'ai une autre erreur de type:


    com.sun.mail.smtp.SMTPSendFailedException: 550 5.7.1 Client does not have permissions to send as this sender

    at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2057)
    at com.sun.mail.smtp.SMTPTransport.finishData(SMTPTransport.java:1862)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1100)
    at javax.mail.Transport.send0(Transport.java:195)
    at javax.mail.Transport.send(Transport.java:124)

    est ce que c'est une question de permissions?
    Merci d'avance.

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Client does not have permissions to send as this sender
    La valeur que tu as mis dans le champ from n'est pas une adresse email appartenant au user que tu as mentionné dans les credentials

  10. #10
    Membre régulier
    Homme Profil pro
    Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Inscrit en
    Août 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyste Concepteur[Secteur Banque/assurance]/ Ingénieur d'état en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 89
    Points : 96
    Points
    96
    Par défaut
    Bonjour
    j'ai réussi à résourdre le problème d'envoi de mails,en passant vers une connection TLS ,
    sauf j'ai maintenant un problème dans l'encodage d'un fichier texte(le fichier txt qui contient le contenu du mail)
    le message reçu par l'application est mal stucturé(problème d'encodage avec les accents et apostrophe)
    est ce qu'il y a un moyen pour appliquer l'encodage au moment de récupération du contenu du fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     // 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";
             // String str1 = "àéô'..."; 
              //String str2 = new String(str1.getBytes(),Charset.forName("UTF-8"));
        //ici je dois convertir le contenu du fichier pour encoder les caractères spéciaux
              mailReader.close ();
    Merci pour votre aide

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Le constructeur de ton Reader a une version qui prend en paramètre l'encodage à utiliser pour la lecture.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Batch] extraction chaines depuis fichier
    Par Alderick dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 01/07/2015, 12h41
  2. Réponses: 0
    Dernier message: 05/09/2014, 22h30
  3. Script Shell et update BD depuis fichier txt
    Par pcsystemd dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 10/07/2008, 22h22
  4. [VBA Excel] Extraction de données fichier txt vers Excel et mise en forme
    Par newcodeur dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 23/05/2008, 11h45
  5. Extraction d'un fichier .txt vers une liste + random
    Par fontelouis dans le forum Pascal
    Réponses: 5
    Dernier message: 23/04/2008, 14h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo