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 :

mail.jar sous linux


Sujet :

API standards et tierces Java

  1. #1
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut mail.jar sous linux
    J'ai développé un projet J2EE dans lequel l'envoi de mail (avec l'Api javaMail) marche bien sous windows mais lorsque je déploie le même projet sous linux (red hat) l'envoi de mail ne marche plus, et j'ai pas de message d'erreur.
    Qcq peut il me dire pourquoi?
    PS: c'est la même JVM qui est installée sur les 2 OS.
    Une idée S.V.P ????
    Merci d'avance.
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Trouve d'abord le message d'erreur, il doit être quelque part. Sans ça, on va avoir du mal à t'aider.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Bonjour, as-tu bien tracé toutes les exceptions? (cela arrive assez souvent que l'on voit des catch{} vides)

    A priori il n'y a pas de raison pour que cela ne fonctionne pas sous Linux, encore moins sans exception. Peut-on voir la partie du code qui gère cet envoi de mail?

  4. #4
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Voila le bout de code qui me sert d'envoi du mail :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     // Envoi
            ServiceMail s = ServiceFactory.getServiceMail();
            s.send(to, from, sign, subject, text);
     
            return EMPTY_MAP;
    Je sais pas si ca vous cause beaucoup .
    Je vois toujours pas de trace d'erreur.
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  5. #5
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    A priori ServiceMail et ServiceFactory sont des classes appartenant à ton projet, non? ce serait plutôt là-dedans qu'il faudrait voir comment sont gérées les erreurs.

    Ta méthode dont tu cites une partie du code, est-ce qu'elle peut lancer des exceptions dans sa déclaration?

  6. #6
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    voila concretement la methode qui envoie le mail :
    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
     
    private static void send(
            String smtpServer,
            String encodingServer,
            InternetAddress from,
            InternetAddress[] toMails,
            InternetAddress[] ccMails,
            String subject,
            String text,
            List attachedFiles) throws MessagingException {
     
            /**
             * Encoding : Utilisation du system.getProperties. <br>
             * A modifier si passage en JavaMail-1.3
             * http://java.sun.com/products/javamail/JavaMail-1.3-changes.txt <br>
             * 3. Add mail.mime.charset property (4377731) <br>
             * ------------------------------------------- <br>
             * The "mail.mime.charset" System property (NOTE: *not* Session
             * property) names the default charset to be used by JavaMail. If not
             * set, the standard J2SE "file.encoding" System property is used. This
             * allows applications to specify a default character set for sending
             * messages that's different than the character set used for files
             * stored on the system. This is common on Japanese systems.
             */
            Properties props = System.getProperties();
            String encoding = props.getProperty("file.encoding");
            props.setProperty("file.encoding", encodingServer);
     
            try {
                // -- Attaching to default Session, or we could start a new one --
                props.put("mail.smtp.host", smtpServer);
                Session session = Session.getDefaultInstance(props, null);
     
                // Create a new message
                Message msg = new MimeMessage(session);
     
                // Set the FROM and TO fields
                msg.setFrom(from);
                msg.setRecipients(Message.RecipientType.TO, toMails);
     
                // -- We could include CC recipients too --
                if (ccMails != null) {
                    msg.setRecipients(Message.RecipientType.CC, ccMails);
                }
     
                // Set the subject
                if (subject != null) {
                    msg.setSubject(subject);
                }
                // Set some other header information
                msg.setSentDate(new Date());
     
                // create and fill the first message part
                MimeBodyPart mbp1 = new MimeBodyPart();
     
                // Text
                if ((text.toUpperCase().startsWith("<HTML"))
                    || (text.toUpperCase().startsWith("<!"))) {
                    mbp1.setContent(text, "text/html");
                } else {
                    mbp1.setText(text);
                }
                // create the Multipart and its parts to it
                Multipart mp = new MimeMultipart();
                mp.addBodyPart(mbp1);
     
                if (attachedFiles != null) {
                    for (Iterator iter = attachedFiles.iterator(); iter.hasNext();) {
                        // create the next message part
                        MimeBodyPart mbp2 = new MimeBodyPart();
                        // attach the file to the Multipart
                        String fileName = (String) iter.next();
                        FileDataSource fds = new FileDataSource(fileName);
                        mbp2.setDataHandler(new DataHandler(fds));
                        mbp2.setFileName(new java.io.File(fileName).getName());
                        mp.addBodyPart(mbp2);
                    }
                }
                // add the Multipart to the message
                msg.setContent(mp);
     
                // Send the message
                Transport.send(msg);
            } catch (MessagingException e) 
            {
     
                throw e;
            } finally {
                props.setProperty("file.encoding", encoding);
            }
    Comme j'ai dit plus hautle projet sous windows marche bien mais pas sous linux, je sais pas si ca pourrait venir d'un pb rézo.
    Merci de m'aiguiller.
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  7. #7
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Comme je le pensais, la méthode send peut lancer une MessagingException. Ce qui arrive peut-être dans ton cas, mais il faut savoir ce que tu en fais de cette exception au moment où tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ServiceMail s = ServiceFactory.getServiceMail();
    s.send(to, from, sign, subject, text);
    Tu la renvois au-dessus?

  8. #8
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Ci-dessous une méthode la plus simple possible:
    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
     
     public static void envoiMail()
      {
    	  	String emailfrom = "blabla@yahoo.fr";
    		String emailto = "blabla2@micropole-univers.com";
    		String host = "myServer";
     
    		//Récupére les propriétés du systéme
    		Properties props = System.getProperties();
     
    		//Spécification du serveur mail
    		props.put("mail.smtp.host",host);
    		props.put("mail.smtp.auth","false");
     
    		//Récupère la session
    		Session sessionMail = Session.getInstance(props,null);
     
    		//Définition du message
    		MimeMessage message = new MimeMessage(sessionMail);
     
    		//Afficher Mode Debug
    		sessionMail.setDebug(true);
     
     
    		try{
    		 message.setFrom(new InternetAddress(emailfrom));
    		 //Spécification du destinataire
    		 message.addRecipient(Message.RecipientType.TO, new InternetAddress(emailto));
    		 //Sujet du message
    		 message.setSubject("Test API JavaMail");
    		 //Texte du message
    		 message.setText("Juste pour tester l'API JavaMail");
    		 //Envoie le message avec un smtp authentifié
    		 message.saveChanges(); // implicit with send()
    		 Transport transport = sessionMail.getTransport("smtp");
    		 transport.connect(host,"","");
    		 transport.sendMessage(message, message.getAllRecipients());
    		 transport.close();
     
    		}catch(Exception e){
    		 System.out.print("error d'envoi de mail");
    		} 
      }
    Je l'ai chopé sur ce forum, elle marche très bien sur Windows mais toujours pas sur linux.
    Y'a t'il une config réseau DNS à faire qcq part?
    Je n'y comprends plus que dalle.
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  9. #9
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Si tu catchais correctement l'erreur, peut-être que tu aurais le message dans les traces. Ce code devrait fonctionner :
    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
    import javax.mail.internet.*;
    import javax.mail.*;
    import java.util.*;
     
    /**
     * Classe permettant d'envoyer un mail.
     */
    public class TestMail {
       private final static String MAILER_VERSION = "Java";
       public static boolean envoyerMailSMTP(String serveur, boolean debug) {
             boolean result = false;
             try {
                      Properties prop = System.getProperties();
                      prop.put("mail.smtp.host", serveur);
                      Session session = Session.getDefaultInstance(prop,null);
                      Message message = new MimeMessage(session);
                      message.setFrom(new InternetAddress("moi@chez-moi.fr"));
                      InternetAddress[] internetAddresses = new InternetAddress[1];
                      internetAddresses[0] = new InternetAddress("moi@chez-moifr");
                      message.setRecipients(Message.RecipientType.TO,internetAddresses);
                      message.setSubject("Test");
                      message.setText("test mail");
                      message.setHeader("X-Mailer", MAILER_VERSION);
                      message.setSentDate(new Date());
                      session.setDebug(debug);
                      Transport.send(message);
                      result = true;
             } catch (AddressException e) {
                      e.printStackTrace();
             } catch (MessagingException e) {
                      e.printStackTrace();
             }
             return result;
       }
     
       public static void main(String[] args) {
             TestMail.envoyerMailSMTP("10.10.50.8",true);
       }
    }
    Si ce n'est pas le cas, peut-être que tu es confronté à ce cas : While trying to run my program on Linux I get a very strange error message and the program fails. What did I do wrong? Mais pour en être sûr, il faudrait trouver l'erreur, soit en utilisant le debugger de ton IDE, soit en ajoutant des traces (System.out.println("entrée dans envoiMail")

  10. #10
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Le dernier code marche très bien sous windows comme les autres scripts que j'ai utilisés avant, mais lorsque je déploie le war sous Linux , l'application me dit bien que le mail a été envoyé mais je reçois tjrs rien, j'avoue que je suis complètement largué par rapport à ce pb.
    Je ne peux pas debugger via mon IDE car je déploie le war généré par eclipse (sous windows) dans un environnement Linux. Je pensais que ça venait peut être d'une conf rézo, genre mon serveur linux ne communiquait pas avec mon serveur smtp mais ce n'est pas le k car lorsque j'effectue la commande
    sous ce serveur linux le mail part effectivement.
    Pouvez m'aider si qcq a déjà rencontré ce pb?
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  11. #11
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Bonjour,
    Ouf j'ai enfin résolu mon pb de mail .
    J'explique pour que ca puisse aider qcq plus tard.
    En fait sous windows pour mes devs j'utilisais Tomcat et sous linux Jonas, et donc sous tomcat la bibliothèque utilisée était mail.jar et activation.jar, lorsque je deployais mon projet sous Jonas (avec bien sur toutes mes librairies embarquées dans Web-inf\lib), c'est plutôt les 2 librairies propres à Jonas suivantes :
    -gnu-mail.jar
    -jaf.jar
    qui étaient appelées pour l'envoi de mail, lesquelles n'étaient pas compatibles avec les classes de JavaMail. et donc pour résoudre le pb:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    * Virer ces 2 librairies propres à Jonas (dans commons\lib)
    *Les remplacer par activation.jar et mail.jar
    *Supprimer de votre web-inf\lib activation.jar et mail.jar qui ont été remontés au nivo de Jonas=> pour éviter un pb de conflit de lib
    Cdt..
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

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

Discussions similaires

  1. Erreurs au lancement d'un jar sous linux
    Par CinePhil dans le forum Débuter avec Java
    Réponses: 28
    Dernier message: 06/10/2014, 16h04
  2. Exécution d'un .jar sous linux
    Par hnouna2007 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 28/07/2009, 15h46
  3. Comment installer un serveur mail (smtp), sous linux ubuntu(en ayan pour f.a.i neuf)?
    Par Invité dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 28/01/2009, 15h24
  4. erreur de jar sous linux
    Par shawty dans le forum Langage
    Réponses: 2
    Dernier message: 16/05/2007, 16h56

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