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

Java Discussion :

Erreur quand code dans une méthode (dans un main aucune erreur)


Sujet :

Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 19
    Points : 9
    Points
    9
    Par défaut Erreur quand code dans une méthode (dans un main aucune erreur)
    Bonjour,
    Voilas j'ai ce code :
    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
     package com.sdzee.javamail;
     
    import java.util.Properties;
     
    import javax.mail.*;
    import javax.mail.internet.*;
     
    import com.sdzee.servlets.Mail;
     
    public class Javamail {
     
      public static void main (String[] args) throws Exception {
      }
    	  public void Javamailmethod (){
     
    		String email = Mail.VarMail(); 
     
    	    String host = "smtp.gmail.com";
    	    String from = "monadresse@gmail.com";
     
    		//String to = email ;
    	    String to = "adressedestinataire@gmail.com";
    	    String username = "monadresse@gmail.com";
    	    String password = "monmotdepasse";
     
     
     
    	    Properties props = new Properties();
     
     
    	    props.setProperty("mail.smtp.ssl.enable", "true");
    	    props.setProperty("mail.smtp.ssl.socketFactory.class",
    						"DummySSLSocketFactory");
    	    props.setProperty("mail.smtp.ssl.socketFactory.fallback", "false");
     
     
     
    	    Session session = Session.getInstance(props, null);
    	    session.setDebug(true);
     
    	    MimeMessage message = new MimeMessage(session);   
    	    message.setFrom(new InternetAddress(from));
    	    message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
    	    message.setSubject("Hello");
    	    message.setText("Hello World");
    	    Transport tr = session.getTransport("smtp");
    	    tr.connect(host, username, password);
    	    message.saveChanges();
     
    	    tr.sendMessage(message,message.getAllRecipients());
    	    tr.close();
     
     
      }
    }
    Qui fonctionne parfaitement bien quand il se trouve dans la main (il me permet d'envoyer un mail).
    Mais problème du coup je ne peux pas l'appeler depuis une autre classe, de ce fait je souhaite le mettre dans ma méthode JavamailMethod mais problème, il me met en erreur toute cette partie du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    message.setFrom(new InternetAddress(from));
    	    message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
    	    message.setSubject("Hello");
    	    message.setText("Hello World");
    	    Transport tr = session.getTransport("smtp");
    	    tr.connect(host, username, password);
    	    message.saveChanges();
     
     
    	    tr.sendMessage(message,message.getAllRecipients());
    	    tr.close();
    Il propose de faire des try catch ce que j'ai fait de cette manière :
    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
     
    try {
    	    message.setFrom(new InternetAddress(from));
    	    message.setSubject("Hello");
    	    message.setText("Hello World");
    	    Transport tr = session.getTransport("smtp");
    	    tr.connect(host, username, password);
    	    message.saveChanges();
    	    tr.sendMessage(message,message.getAllRecipients());
    	    tr.close();
    			message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
    		} catch (AddressException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (MessagingException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    Mais cela ne fonctionne pas, certes les erreurs ne sont plus présentes mais le code ne fait plus rien en s’exécutant.
    Il me propose également de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     public void Javamailmethod () throws AddressException, MessagingException{
    mais même résultat le code ne fait plus rien en s’exécutant.


    J'ai réellement tout essayer mais j'en arrive à un point où mais quelques notions ne me permettent pas de résoudre ce problème car je ne comprennent pas l'erreur principale (pourquoi dans une méthode cette partie d code est en erreur), je m'en remets donc à vous.

    Cordialement.

  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
    C'est bien, tu as défini une nouvelle méthode et tu as tout mis dedans. Tu n'aurais pas oublié d'appeler cette méthode?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    C'est bien, tu as défini une nouvelle méthode et tu as tout mis dedans. Tu n'aurais pas oublié d'appeler cette méthode?
    La méthode ne fonctionne pas, elle comporte les erreurs que j'ai citer plus haut donc je ne l'ai pas encore appeler depuis une autre classe oui, mais cela ne sert a rien que je l'appelle si elle comporte des erreurs je pense.

  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
    Tu as dit les avoir corrigées mais que " le code ne fait plus rien en s’exécutant", d'où ma question. Donne nous ton code complet qui "ne fait plus rien en s’exécutant"

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    Et bien c'est celui çi avec les try catch :

    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
     
     
     package com.sdzee.javamail;
     
    import java.util.Properties;
     
    import javax.mail.*;
    import javax.mail.internet.*;
     
    import com.sdzee.servlets.Mail;
     
    public class Javamail {
     
      public static void main (String[] args) throws Exception {
      }
    	  public void Javamailmethod (){
     
    		String email = Mail.VarMail(); 
     
    	    String host = "smtp.gmail.com";
    	    String from = "monadresse@gmail.com";
     
    		//String to = email ;
    	    String to = "adressedestinataire@gmail.com";
    	    String username = "monadresse@gmail.com";
    	    String password = "monmotdepasse";
     
     
     
    	    Properties props = new Properties();
     
     
    	    props.setProperty("mail.smtp.ssl.enable", "true");
    	    props.setProperty("mail.smtp.ssl.socketFactory.class",
    						"DummySSLSocketFactory");
    	    props.setProperty("mail.smtp.ssl.socketFactory.fallback", "false");
     
     
     
    	    Session session = Session.getInstance(props, null);
    	    session.setDebug(true);
     
    	    MimeMessage message = new MimeMessage(session);   
    	  try {
    	    message.setFrom(new InternetAddress(from));
    	    message.setSubject("Hello");
    	    message.setText("Hello World");
    	    Transport tr = session.getTransport("smtp");
    	    tr.connect(host, username, password);
    	    message.saveChanges();
    	    tr.sendMessage(message,message.getAllRecipients());
    	    tr.close();
    			message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
    		} catch (AddressException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (MessagingException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
     
      }
    }
    Si je le lance il ne m'envoi plus le mail, de ce fait je pense avoir mal corriger les erreurs et que d'y ajouter un try catch n'était pas le bonne solution.

  6. #6
    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
    Comme je l'ai dit, tu as juste créé une méthode là. Tu ne l'appelle nulle part et comme ton main est vide, au final ton programme ne fait rien.

    Il faut appeler cette méthode pour faire l'envoi, depuis le main:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      public static void main (String[] args) throws Exception {
              new Javamail().Javamailmethod();
      }
    au fait, il est recommandé de commencer les noms de méthodes par une minuscule en java

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    Ah d'accord, et bien sa fonctionne. Cependant mon réel but et d’appeler cette méthode depuis une autre page :
    Je souhaite appeler cette méthode depuis une page JSP (java ee) avec ce code :
    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
     
    <%@ page pageEncoding="UTF-8" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
    <%@page import="com.sdzee.javamail.*" %> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
     
    <% 
    Javamail tempenvoimail = new Javamail();
    tempenvoimail.Javamailmethod();
    %>
     
    </body>
    </html>
    J'importe bien mon package en haut et il me semble que ma syntaxe pour l'import est correcte(pas d'erreur signalées) mais quand je lance mon application qui une fois le formulaire envoyé redirige vers cette page, cette page est censé exécuter ma méthode hors ce n'est pas le cas.

    Pourtant il me semble que si l'on appelle une méthode elle est censé s’exécuter ?

Discussions similaires

  1. Déclaration d'une méthode dans une méthode
    Par Anduriel dans le forum Langage
    Réponses: 9
    Dernier message: 03/01/2012, 12h53
  2. [PHP 5.3] [POO] Appel d'une méthode dans une méthode
    Par yann18 dans le forum Langage
    Réponses: 6
    Dernier message: 20/10/2011, 09h56
  3. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. "ajouter une méthode dans une méthode"
    Par Zorgloub dans le forum Langage
    Réponses: 1
    Dernier message: 09/04/2006, 12h53

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