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] recevoir piece jointe


Sujet :

API standards et tierces Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 22
    Points : 22
    Points
    22
    Par défaut [javaMail] recevoir piece jointe
    Bonjour

    Je suis actuellement en train de developper un programme java qui permet de recevoir des mails et de traiter des pieces jointes.
    Dans un premier temps j'aimerai déjà recevoir des mails.
    J'ai déjà une question: est ce qu'il faut télécharger le pop3.rar ou est ce qu'il est intégré dans javaMail 1.3.3?
    Sinon j'ai fait ce code ci?
    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
     
    String host = ...;
    String username = ...;
    String password = ...; 
    Properties props = new Properties();
     
    // Récupère la session
    Session session = Session.getDefaultInstance(props, null);
     
    // Récupère la "messagerie" et se connecte
    Store store = session.getStore("pop3");
    store.connect(host, username, password);
     
    // Récupère le fichier "Boite de réception" et l'ouvre
    Folder folder = store.getFolder("INBOX");
    folder.open(Folder.READ_ONLY);
     
    // Check les messages du dossier
    Message message[] = folder.getMessages();
    System.out.println(""+message.length);
    et quand j'essaye par exemple avec le host = pop3.yahoo.fr il m'envoie des messages d'erreur.
    Comment est ce qu'il faut remplir le host?
    Sinon est ce que quelqu'un a déjà extrait des pièces jointes et ci oui comment est ce que l'on peut faire?
    Merci d'avance
    jc
    PS j'suis débutant

  2. #2
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Ton code m'a l'air juste...

    Tu pourrais nous montrer le message d'erreur ?

    P.S. Récupérer des pièces jointes ca m'intéresserait beaucoup aussi

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 22
    Points : 22
    Points
    22
    Par défaut
    Mon message d'erreur est:
    Exception in thread "main" javax.mail.MessagingException: Connect failed;
    nested exception is:
    java.net.SocketException: Connection reset by peer: connect
    at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:130)
    at javax.mail.Service.connect(Service.java:236)
    at javax.mail.Service.connect(Service.java:137)
    at Main.main(Main.java:32)

    Cela me le met des que je veux me connecter à un host.
    (pop3.yahoo.fr etc...)
    J'ai créé un authenticator mais je ne sais pas comment dire aux propriètés que il doit être à true?
    Est ce que quelqu'un a déjà été dans ce cas?
    Merci d'avance
    jc

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Points : 30
    Points
    30
    Par défaut pièces jointes
    Bonjour à vous deux...

    J'étais aussi embêté que vous jusqu'à aujourd'hui pour la lecture des pièces jointes... Je ne sais si vous avez trouvé depuis mais moi j'ai avancé. Contrairement à l'envoi des pièces jointes, dans notre cas pour la lecture, il faut identifier la ou les pièces, les lire et copier le contenu dans un nouveau fichier, voici un bout de code sans commentaires ni capture d'exceptions mais je pense que cela va vous aider
    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
     
    Folder folder = store.getFolder("INBOX");
    System.out.println("lecture des messages");
    folder.open(Folder.READ_ONLY);
     // Check les messages du dossier
     Message message[] = folder.getMessages();
     System.out.println(message.length);
     for(int i=0;i<message.length;i++) {
         Multipart mp = (Multipart)message[i].getContent();
         int n=mp.getCount();
         for (int j=0;j<n;j++) {
              Part part = mp.getBodyPart(j);
              String disposition = part.getDisposition();
              if ((disposition != null)&&((disposition.equals(Part.ATTACHMENT)||(disposition.equals(Part.INLINE))))){
              File save=new File("C:\\Documents and Settings\\TEMP\\Desktop\\recup\\"+part.getFileName());
              FileWriter ecriture=new FileWriter(save);
              InputStreamReader lecture=new InputStreamReader(part.getInputStream());
              int flux;
              while ((flux=lecture.read())!=-1) {
                      ecriture.write(flux);
              }
              lecture.close();
              ecriture.close();
          }
       }
    }
    bonne continuation...

  5. #5
    Membre actif Avatar de Betatesteur
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Points : 248
    Points
    248
    Par défaut
    Un exemple d'utilisation JAVAMAIL
    Vérification des messages
    Pour lire vos messages, vous devez récupérer une session, récupérer et se connecter à un objet store qui représente un système de stockage de messages. (Nous l’appellerons « Messagerie »).
    Il vous faut ensuite ouvrir le dossier approprié et récupérer vos messages.

    Exemple pour le « checking » des messages :
    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
    String host = ...;
    String username = ...;
    String password = ...; // Créé un objet Properties
    Properties props = new Properties();
    // Récupère la session
    Session session = Session.getDefaultInstance(props, null);
    // Récupère la "messagerie" et se connecte
    Store store = session.getStore("pop3");
    store.connect(host, username, password);
    // Récupère le fichier "Boite de réception" et l'ouvre
    Folder folder = store.getFolder("INBOX");
    folder.open(Folder.READ_ONLY);
    // Check les messages du dossier
    Message message[] = folder.getMessages();
    //Utilisé pour la lecture
    BufferedReader reader = new BufferedReader ( new InputStreamReader(System.in));
    for (int i=0, n=message.length; i<n; i++) {br> System.out.println(i + ": " + message[i].getFrom()[0] + "\t" + message.getSubject());
    // Pour la lecture du message
    System.out.println("Voulez vous lire le message " [YES to read/QUIT to end]");
    String line = reader.readLine();
    if ("YES".equals(line)) {
    [i]message.writeTo(System.out);
    }
    else if ("QUIT";.equals(line)) {
    break;
    }
    }
    // ferme la connection 
    folder.close(false);
    store.close();
    Répondre au message
    La classe Message inclue une méthode reply() pour créer un nouveau message avec les propriétés du message reçu en ajoutant « RE : » dans le sujet.

    [i]Pour répondre seulement à l’expéditeur, il faut passer false en paramètre à la méthode reply().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MimeMessage reply = (MimeMessage)message.reply(false);
    reply.setFrom(new InternetAddress("groupe@ineo.com"));
    reply.setText("Message recu merci");
    Transport.send(reply);
    Envoyer un message avec des Pièces jointes

    Voici pour cela les étapes à suivre pour joindre une pièce jointe à votre message
    Les pièces jointes sont des ressources qui peuvent être jointes avec un mail. Elles souvent placées en dehors des messages comme un fichier texte, une image, une vidéo, un executable.

    Comme avec un client de messagerie, on peut aussi attacher une pièce jointe au mail avec les API JavaMail et les ouvrir.

    Pour envoyer une pièce jointe, il faut créer des parties de messages.Chaque partie est créée avec un objet de type MimeBodyPart.
    La première partie est votre message.
    Les autres parties correspondent à la pièce jointe.
    Toutes les parties sont ajoutées dans un objet de type MimeMultipart grâce à la méthode addBodyPart().
    Il faut utiliser la classe DataSource pour définir la pièce jointe qui sera un objet de type FileDataSource.
    La méthode setDataHandler() permet l’ajout de la pièce jointe au message avec la méthode setFileName() pour le nom du fichier.

    Exemple:
    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
    // Définit le message
    Message message = new MimeMessage(session);
    message.setFrom(new InternetAddress(from));
    message.addRecipient(Message.RecipientType.TO, 
    new InternetAddress(to));
    message.setSubject("Pièce jointe"); // Première partie du message
    BodyPart messageBodyPart = new MimeBodyPart();
    // Contenu du message
    messageBodyPart.setText("le voici");
    //Ajout de la première partie du message dans un objet Multipart
    Multipart multipart = new MimeMultipart();
    multipart.addBodyPart(messageBodyPart);
    // Partie de la pièce jointe
    messageBodyPart = new MimeBodyPart();
    DataSource source = new FileDataSource("image.gif");
    messageBodyPart.setDataHandler(new DataHandler(source));
    messageBodyPart.setFileName("image.gif");
    //Ajout de la partie pièce jointe
    multipart.addBodyPart(messageBodyPart);
    message.setContent(multipart);
    // Envoi du message
    Transport.send(message);

    source Supinfo

    A+

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Bonjour à tous,

    je suis en train de développez un petit client POP pour ma société permettant de récupérer les messages sur le serveur POP.

    Les messages sur le serveur ont tous le même format, à savoir un texte et une pièce jointe sous la forme d'un fichier PDF.

    Pour l'instant j'arrive à récupérer le mail, mais je n'arrive pas a recréer le PDF issu de la pièce jointe. Le texte est encodé en Base64.
    Avec un fichier texte, pas de souci j'arrive bien à recréer le fichier mais pas avec le PDF.
    J'ai testé la librairie "iText" mais le fichier PDF qui est créer est vide (une page blanche), pourtant il fait bien la taille qu'il devrait faire.

    si l'un d'entre vous peut m'aider je lui en serais éternellement reconnaissant.

    merci d'avance

Discussions similaires

  1. [Javamail] Récupérer les pieces jointes
    Par mrfirefunk dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 05/03/2012, 02h21
  2. [ITEXT et JAVAMAIL] envoyer pdf en piece jointe
    Par maniolo dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 15/05/2009, 15h06
  3. [javamail] certificat en piece jointe
    Par spopo69 dans le forum API standards et tierces
    Réponses: 16
    Dernier message: 04/05/2009, 15h59
  4. [Javamail] Pieces jointes
    Par miloux32 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 06/04/2007, 18h05
  5. [Script Windows]recevoir des mails et piece jointe
    Par chpog dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 30/08/2006, 11h52

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