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] MessagingException Erreur


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut [JAVAMAIL] MessagingException Erreur
    Bonjour

    Je suis nouveau dans le domaine, j'ai fait un petit programme de réception de mail, ça fonctionne très bien avec les messageries internet comme pop.mail.yahoo.fr ou pop.gmail.com.
    Mais mon problème est que je veut accéder à une boite mail sur un réseau privée 172.30.xxx.xxx
    et la les problèmes commencent, voila l'erreur MessagingException:
    "The base class for all exceptions thrown by the Messaging classes"

    Remarque: quand je teste cette adresse 172.30.xxx.xxx avec Outlook, ça fonctionne correctement, donc l'adresse est correcte.

    voila la partie du code qui traite la connexion au serveur:
    si vous voulez je posterais les autres classes:
    MailMessageExtractor.java
    StringUtils.java

    Merci encore pour votre aide


    *********************************************************


    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
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import javax.swing.*;
    import java.util.*;
    import javax.mail.Folder;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.NoSuchProviderException;
    import javax.mail.Session;
    import javax.mail.URLName;
    import com.sun.mail.pop3.POP3SSLStore;
    import java.io.*;
    import javax.mail.AuthenticationFailedException;
     
    public class Reception3 extends JFrame implements ActionListener,MouseListener{
     
    	Tunisie_Telecom Tun;
    	int nbrmsg=2;
    	static String host="172.30.30.200"; 
    						   //pop.mail.yahoo.fr  217.12.10.63
    						  //pop.gmail.com     72.14.221.111
     
    	int num=1000;
    	String[] comptenue;
    	String chaine;
    	String s;
    	int nbS=0;
    	int nbP=0;
    	JLabel JL_Image1 =new JLabel(new ImageIcon("telecom.jpg"));
    	JButton JB_Home=new JButton("Home");
    	JButton JB_Lire=new JButton("Select mail");
    	JButton JB_Imprimer=new JButton(new ImageIcon("print2.png"));
    	JButton JB_Envoyer=new JButton("Envoyer");
    	JButton JB_Precedent=new JButton("Precedent");
    	JButton JB_Suivant=new JButton("Suivant");
    	JLabel JL_nbmsg;
    	JLabel JL_De= new JLabel("De");
    	JLabel[] JL_Dei= new JLabel[50];
    	JLabel JL_Objet= new JLabel("Objet");
    	JLabel[] JL_Objeti= new JLabel[50];
    	JLabel JL_Date= new JLabel("Date");
    	JTextArea text;
    	JScrollPane Scrole;
    	JPanel p0=new JPanel();
    	JPanel p1=new JPanel();
    	JPanel p2=new JPanel();
    	JPanel p3=new JPanel();
    	JPanel p4=new JPanel();
    	JPanel p5=new JPanel();
    	JPanel p6=new JPanel();
    	JPanel p7=new JPanel();
     
    	Reception3()
        {
    		super("Mail");
     
    		/* Récupération des propriété du System */
            Properties prop = System.getProperties();
            System.out.println("Creation d'une session mail");
            /* Creation d'un objet Session */
            Session sess = Session.getDefaultInstance(prop, null);
            sess.setDebug(true);
     
            prop.list(System.out);
     
            try {
            String user = "*****";            
            String pwd =  "*****";          		 
     
     
            /* Création de l'object qui va récupéré le contenu de la boite */
            System.out.println("obtention d'un objet store");
            // Store st = sess.getStore("pop3");
     
            /* Connection au serveur */
            POP3SSLStore st = new POP3SSLStore(sess, new URLName(""));
            st.connect(host, user, pwd);
            System.out.println("connection ok");
            System.out.println("st=:" + st);
            System.out.println("Obtention d'un folder");
     
            /*
            * Ouverture du répertoire contenent les mails Par defaut INBOX
            */
            Folder f = st.getFolder("INBOX");
            f.open(Folder.READ_ONLY);
     
            /* Récupération des messages */
            System.out.println("Obtention des messages");
            Message msg[] = f.getMessages();
            nbrmsg=f.getMessageCount();
     
            System.out.println("nombre de messages : " +nbrmsg);
            System.out.println("nombre de nouveau messages : "+ f.getNewMessageCount());
            System.out.println("liste des nouveau messages");
     
            comptenue = new String[nbrmsg];
     
            for (int i = 0; i < msg.length; i++) {
     
            	System.out.println("Subject:" + msg[i].getSubject());
        		MailMessageExtractor extractor = new MailMessageExtractor();
        		String s = extractor.extractMessage(msg[i]);
        		System.out.println("ceci est le mail: \n" + s);
        		System.out.println("****************************");
     
        		comptenue[i]=s;
     
            if (msg[i].isMimeType("text/plain")) {	
             System.out.println("Expediteur: " + msg[i].getFrom()[0]);
             System.out.println("Sujet: " + msg[i].getSubject()); 
             System.out.println("Texte: " +(String) msg[i].getContent());
            }
            System.out.println("fin des messages");
            }
     
            for (int i = 0; i < nbrmsg; i++) {
            	JL_Dei[i]= new JLabel(" ");
            	JL_Objeti[i]= new JLabel(" ");
            }
     
     
            for (int i = 0; i < msg.length; i++) {
            	JL_Dei[i].setText(" "+msg[i].getFrom()[0]);
            	JL_Objeti[i].setText(" "+msg[i].getSubject());
            }
    // Fermer le repertoire folder        
            msg.clone();
            } /* fin de try */
     
            /* Les exceptions */
     
            catch (NoSuchProviderException e) {
            //System.out.println("Erreur sur le provider" + e.getMessage());
            System.out.println("This exception is thrown when Session attempts to instantiate a Provider that doesn't exist." + e.getMessage());
            JOptionPane.showMessageDialog(null,"This exception is thrown when Session attempts to instantiate a Provider that doesn't exist." + e.getMessage());
            } 
            catch (MessagingException e) {
            //System.out.println("Erreur sur Message" + e.getMessage());
            	System.out.println("The base class for all exceptions thrown by the Messaging classes, Nom Serveur Incorrect, " + e.getMessage());
            	JOptionPane.showMessageDialog(null,"The base class for all exceptions thrown by the Messaging classes, Nom Serveur Incorrect, " + e.getMessage());
            } 
            catch (IOException e) {
            	System.out.println("Erreur sur IO" + e.getMessage());
            	JOptionPane.showMessageDialog(null,"Erreur sur IO" + e.getMessage());
            } 
            catch (Exception e) {
            	System.out.println("Erreur indetermiee" + e.getMessage());
            	JOptionPane.showMessageDialog(null,"Erreur indetermiee" + e.getMessage());
            }
     
     
     
     
    		JL_nbmsg= new JLabel("1-10 messages sur "+nbrmsg);
        	this.setSize(525,490);
            this.setLocation(250,150);
            Container Fenetre=this.getContentPane();
            p0.setLayout(new BorderLayout());
            this.getContentPane().add(p0);
            p0.add(JL_Image1,"North");
            p0.add(p1,"Center");
            text=new JTextArea(15,30);
            Scrole=new JScrollPane(text);
            p0.add(Scrole,"South");    
            p1.setLayout(new BorderLayout());
            p1.add(p2,"North");
            p1.add(p3,"Center");
            p1.add(p4,"South");
            p2.add(JB_Home);p2.add(JB_Lire);p2.add(JB_Imprimer);p2.add(JB_Envoyer);
            p3.setLayout(new FlowLayout());
            p3.add(p5);p3.add(p6);p3.add(p7);
            p5.setLayout(new GridLayout(12,1));
            p5.add(JL_De);
            p6.setLayout(new GridLayout(12,1));
            p6.add(JL_Objet);
            p7.setLayout(new GridLayout(12,1));
            p7.add(JL_Date); 
            p4.add(JB_Precedent);p4.add(JB_Suivant);p4.add(JL_nbmsg);
            JB_Home.addActionListener(this);
            JB_Lire.addActionListener(this);
            JB_Lire.setEnabled(false);
            JB_Imprimer.addActionListener(this);
            JB_Imprimer.setEnabled(false);
            JB_Envoyer.addActionListener(this);
            JB_Precedent.addActionListener(this);
            JB_Precedent.setEnabled(false);
            JB_Suivant.addActionListener(this);
            JB_Suivant.setEnabled(false);
     
           if (nbrmsg>0) nbS=(nbrmsg/10);
            System.out.println("*************NbrS***********:  "+nbS);
            System.out.println("*************NbrP***********:  "+nbP);
     
            if(nbS>0) {JB_Suivant.setEnabled(true);}
     
            if (nbrmsg==0) JOptionPane.showMessageDialog(null,"Nbr de Message=0 ya pas de nouveau mail");
    //JAVAMAIL ouvre juste les nouveau mail        
            else if (nbrmsg<10)
            	for (int i = 0; i < nbrmsg; i++) {
            		p5.add(JL_Dei[i]);
            		p6.add(JL_Objeti[i]);
            	}
     
            	else
                	for (int i = 0; i < 10; i++) {
                		p5.add(JL_Dei[i]);
                		p6.add(JL_Objeti[i]);
                	}
     
     
            for (int i = 0; i < nbrmsg; i++) {
            	JL_Objeti[i].addMouseListener(this);
            	JL_Dei[i].addMouseListener(this);
            }
     
            this.show(); 
            this.pack();
           // this.setResizable(false);	
        }
     
     
    	public void actionPerformed(ActionEvent e)
        {
        	JButton B=(JButton) e.getSource();
     
        	if (B==JB_Home){
        		this.hide();
        		//Tunisie_Telecom T=
        			new Tunisie_Telecom();
        	}
     
        	if (B==JB_Lire){
        		JB_Lire.setEnabled(false);
        		JB_Imprimer.setEnabled(true);
        		JB_Lire.setText("Select mail");
        		chaine=comptenue[num];
        		//text.setText("<html><body><u>" +chaine+ "</u></body></html>");
        		text.setText(chaine);
        	}
     
        	if (B==JB_Imprimer){
        		JOptionPane.showMessageDialog(null,"Imprimente non configuré");
        	}
     
        	if (B==JB_Suivant && nbS>0){
        		nbS--;
        		nbP++;
        		JB_Precedent.setEnabled(true);
        		if(nbS<1) {JB_Suivant.setEnabled(false);}
        		JL_nbmsg.setText("11-20 messages sur "+nbrmsg);
        		System.out.println("*************NbrS***********:  "+nbS);
                System.out.println("*************NbrP***********:  "+nbP);
     
               // for (int i = (nbP*10)+1; i < nbrmsg; i++) {
    //ESSAY de redessiner les JLabel des objet et from             
                p5.removeAll();
                p6.removeAll();
                p5.add(JL_De);
                p6.add(JL_Objet);
                for (int i = 11; i < nbrmsg; i++) {
                	p5.add(JL_Dei[i]);
                	p6.add(JL_Objeti[i]);
                }
        	}
     
        	if (B==JB_Precedent && nbP>0){
        		nbS++;
        		nbP--;
        		JB_Suivant.setEnabled(true);
        		if(nbP<1) {JB_Precedent.setEnabled(false);}
        		JL_nbmsg.setText("1-10 messages sur "+nbrmsg);
        		System.out.println("*************NbrS***********:  "+nbS);
                System.out.println("*************NbrP***********:  "+nbP);
     
                for (int i = (nbP*10)+1; i < nbrmsg; i++) {
                	p5.add(JL_Dei[i]);
                	p6.add(JL_Objeti[i]);
                }
        	}
        }
     
     
    	public void mouseClicked(MouseEvent arg0) {}
     
        public void mouseEntered(MouseEvent event){}
     
        public void mouseExited(MouseEvent event){}
     
        public void mousePressed(MouseEvent event) {
     
        	for (int i = 0; i < 10; i++) {
     
        			if( event.getSource() == JL_Objeti[i] )	
        			{JL_Objeti[i].setText("<html><body><u>" + JL_Objeti[i].getText()+ "</u></body></html>");
        			num=i;
        			JB_Lire.setEnabled(true);
        			JB_Lire.setText("Lire Message");
        			text.setText(" ");
        			}
        	}
        }
     
        public void mouseReleased(MouseEvent event) {}
     
    }
    *********************************************************

  2. #2
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Tu utilises cette classe pour te connecter : POP3SSLStore

    Es-tu certain que ta messagerie sur ton réseau local est encapsulée dans du SSL ?

    Sinon une remarque générale, tu devrais dissocier ton code métier de ton IHM. Coder directement dans les évènements c'est bon pour Windev (et encore ça reste bien crado).

    EDIT : Au fait e.getMessage() ne te renvoie rien ? Faut faire attention avec MessagingException, elle est souvent polymorphée en autre chose, ya une dizaine d'exceptions qui en dérive.

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut
    Citation Envoyé par Marco46 Voir le message
    Tu utilises cette classe pour te connecter : POP3SSLStore

    Es-tu certain que ta messagerie sur ton réseau local est encapsulée dans du SSL ?

    Sinon une remarque générale, tu devrais dissocier ton code métier de ton IHM. Coder directement dans les évènements c'est bon pour Windev (et encore ça reste bien crado).

    EDIT : Au fait e.getMessage() ne te renvoie rien ? Faut faire attention avec MessagingException, elle est souvent polymorphée en autre chose, ya une dizaine d'exceptions qui en dérive.
    Merci Marco46 pour la réponse

    - En faite, je suis pas sûr que la messagerie du réseau local est encapsulée dans du SSL ? comment je peut vérifier ça?

    Remarque: Le réseau local que j'utilise est sur le plan National, le serveur n'est pas à coté de moi.

    - j'ai pas compris cette remarque: "tu devrais dissocier ton code métier de ton IHM."

    -pour e.getMessage(), comment je peut améliorer ça

    Merci encore

  4. #4
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    En faite, je suis pas sûr que la messagerie du réseau local est encapsulée dans du SSL ? comment je peut vérifier ça?
    Là comme ça je vois plusieurs solutions :

    1 - Demande à ton admin réseau.
    2 - Essaye de te connecter normalement avec les classes Store et Folder (cf aide javamail)
    3 - Via telnet mais me souviens pas des commandes de mémoire

    Remarque: Le réseau local que j'utilise est sur le plan National, le serveur n'est pas à coté de moi.
    Pour la solution 1 ben un mail à l'admin réseau

    j'ai pas compris cette remarque: "tu devrais dissocier ton code métier de ton IHM."
    Ben ça veut dire que coder la connection POP (par exemple) directement dans les boutons c'est mal parce que tu pourrais très bien avoir 2 fois la même fonctionnalité dans la même interface. Par exemple pour enregistrer un fichier sous Word tu as Fichier--->Enregistrer et le petit bouton avec la disquette dans la toolbar qui fait pareil. Je te parie 100 balles qu'ils ont pas écrit 2 fois le même code :p

    -pour e.getMessage(), comment je peut améliorer ça
    Moi j'utilise une méthode statique qui récolte le StackTrace pour afficher l'erreur dans une fenêtre permettant par exemple d'imprimer le msg d'erreur.

    Par exemple comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    /**
             * Retourne le résultat de Exception.printStackTrace() sous la forme d'une String.
             * 
             * @param p_E l'instance de l'exception
             * 
             * @return la chaine contenant le message d'erreur.
             */
    	public static String getStackTrace(Exception p_E) {
     
    		StringWriter sw = new StringWriter();
    		p_E.printStackTrace(new PrintWriter(sw));
    		return sw.toString();
    	}
    Je n'ai pas développé beaucoup d'applications java donc d'autres seront certainement de meilleur conseil à ce sujet (gestion des erreurs et des messages d'erreurs).

Discussions similaires

  1. une erreur 550 relaying denied avec javamail
    Par une_tite_question dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 15/05/2008, 17h06
  2. Javamail derriere un proxy et erreur SOCKS
    Par AliJava dans le forum JWS
    Réponses: 2
    Dernier message: 05/02/2008, 19h14
  3. Réponses: 3
    Dernier message: 04/12/2007, 22h32
  4. [JavaMail]Erreur avec JavaMail
    Par Ethylene dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 23/08/2005, 14h22
  5. [javamail] erreur d'execution
    Par bibx dans le forum API standards et tierces
    Réponses: 11
    Dernier message: 05/12/2003, 11h04

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