Partage
  • Partager sur Facebook
  • Partager sur Twitter

capturer une exception et l'envoyer par mail

Sujet résolu
    15 juillet 2011 à 19:08:53

    Bonjour, je crois que mon titre est explicite.
    Voilà un topic similaire : http://www.siteduzero.com/forum-83-663 [...] -fichier.html
    Seulement, là, je ne veux pas écrire dans un fichier mais envoyer par mail ...
    bien sûr, je pourrais écrire dans un fichier, puis ouvrir le fichier et récupérer le texte du fichier pour l'envoyer par mail ... Mais, n'y aurait-il pas plus simple ?
    Pour info, j'utilise l'API javamail ...
    merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      15 juillet 2011 à 19:17:27

      Bonjour,

      La vrai question est : As-tu déjà réussi à envoyer un mail avec JavaMail ?

      Parce que si c'est le cas il n'y à plus qu'à mettre la machine en route depuis le catch.
      Pour ça je peut aider.

      Si c'est l'envoi de mail qui pose problème, je doit avouer ne jamais m'y être testé... :o
      • Partager sur Facebook
      • Partager sur Twitter
        15 juillet 2011 à 20:00:39

        oui, je sais envoyer des mails avec JavaMail ... enfin, j'ai recopié et bricoler un code avec, une classe ou j'ai plus qu'a passer les params ... donc je peux, mais je ne maitrise pas le fonctionnement. Mais si il n'y a que ça, je peu apprendre ;)
        voici la classe si ça t'intéresse :
        package Framework;
        import javax.mail.*;
        import javax.mail.internet.*;
        
        import java.io.PrintWriter;
        import java.util.*;
        
        public class Mail{
        	public static final String text = "text/plain", html = "text/html";
        	
        	
        	public void sendMail(String dest[], String subject, String message , String emailfrom, String format) throws MessagingException
        	{
        	    boolean debug = false;
        	    
        		
        		String host = "smtp.gmail.com";
        	     //Set the host smtp address
        		Properties prop = System.getProperties();
        	    prop.put("mail.smtp.auth","false");
        	    prop.put("mail.smtp.port",587);
        	    prop.put("mail.smtp.starttls.enable","true");
        	    			
        	    //Récupère la session
        	    Session sessionMail = Session.getInstance(prop,null);
        	     
        	    //Définition du message
        	    MimeMessage message1 = new MimeMessage(sessionMail);
        	    			
        	    //Afficher Mode Debug
        	    sessionMail.setDebug(true);
        	    			
        	    		
        	    try{
        	     message1.setFrom(new InternetAddress(emailfrom));
        	     //Spécification du destinataire
        	     for(String emailto: dest){	
        	     message1.addRecipient(Message.RecipientType.TO, new InternetAddress(emailto));
        	     }
        	     //Sujet du message
        	     message1.setSubject(subject);
        	     //Texte du message
        	     message1.setContent(message, format);
        	     //Envoie le message avec un smtp authentifié
        	     message1.saveChanges(); // implicit with send()
        	     Transport transport = sessionMail.getTransport("smtp");
        	     transport.connect(host,"monmail@gmail.com","my_password");
        	     transport.sendMessage(message1, message1.getAllRecipients());
        	     transport.close();
        	    }catch(Exception e){
        	    	e.printStackTrace();
        	    }
        	}
        	public static void main(String[] args){
        		Mail m1 = new Mail();
        		String[] dest = {"mail1@gmail.com", "mail2gmail.com"};
        		try {
        			m1.sendMail(dest, "Petit essai Java", "Ceci est un petit mail envoyé avec <span style='color:red' >l'API <em>JavaMail</em></span> pour tester <u>ces fonctionalités</u> ...", "monmail@gmail.com", Mail.html);
        			System.out.println("Mail envoyé !");
        		} catch (MessagingException e) {
        			// TODO Auto-generated catch block
        			e.printStackTrace();
        		}
        	}
        }
        


        voilà, merci.
        • Partager sur Facebook
        • Partager sur Twitter
          15 juillet 2011 à 22:41:09

          Et bien dans ton catch tu récupère la StackTace en String et tu la passe à ta classe de mail pour l'envoi.
          • Partager sur Facebook
          • Partager sur Twitter
            16 juillet 2011 à 9:01:25

            Récupérer l'exception sous forme de String, c'est ce que j'ai essayé de faire, mais pas moyen !
            Toutes les fonctions renvoient généralement un Throwable, et celle qui renvoie des String ou des Object ne renvoient rien d'intéressant.
            Si je savais récupérer une exception sous forme de String, je n'aurais pas posé cette question ;)
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              16 juillet 2011 à 9:58:44

              en regardant la doc de throwable, c'est indiqué, encore une fois, sors le nez de ton code et réfléchi 5 minutes avant de poster.
              • Partager sur Facebook
              • Partager sur Twitter
                16 juillet 2011 à 10:04:06

                Citation : Javadoc, class Throwable, méthode printStackTrace


                The first line of output contains the result of the toString() method for this object. Remaining lines represent data previously recorded by the method fillInStackTrace().


                C'est quand même écrit.
                Tout ce que ça fait c'est un truc du genre :
                System.err.println(e.toString());
                for(StackTraceElement s : e.getStackTrace())
                  System.err.println("\tat " + s.toString());
                

                en supposant que ton exception s'appelle e.
                • Partager sur Facebook
                • Partager sur Twitter
                  16 juillet 2011 à 13:18:49

                  C'était donc de récupérer la string de la stack.
                  La meilleur méthode est d'utiliser un PrintWriter...
                  try{
                  	// Exception
                  } catch (Exception ex){
                  	StringWriter writer = new StringWriter();
                  	PrintWriter printWriter = new PrintWriter(writer);
                  	ex.printStackTrace(printWriter);
                  	String traceString = writer.toString();
                  }
                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 juillet 2011 à 13:39:57

                    d'accord, j'avais bien pensé à PrintWriter, mais je connaissais à peine cette classe, j'aurais du faire un tour à la doc aussi ;)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 juillet 2011 à 14:04:26

                      Tu pouvez aussi taper "Java printStackTrace String" sur Google...
                      • Partager sur Facebook
                      • Partager sur Twitter

                      capturer une exception et l'envoyer par mail

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown