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] envoi mail avec authentification


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Par défaut [javaMail] envoi mail avec authentification
    Bonjour,

    J'essaye de faire un envoie de mail, j'ai fait beaucoup de recherche et regarder pas mal de tuto. Mais je parviens pas à trouvé mon erreur

    voila mon 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
     @Resource(name="mail/equinoxe-software")
        private Session session;
     
        public NewUserMailMDBean() {
        }
     
        public void onMessage(Message msg) {
           if(msg instanceof TextMessage) {
     
     
     
                         Properties props = session.getProperties();
                final String username = (String) props.get("mail.smtp.user");
                    System.out.println("user :"  + username);
                final String password = (String) props.get("mail.smtp.password");
                    System.out.println("password :"  + password);
     
            props.setProperty("mail.transport.protocol", "smtp");
            props.setProperty("mail.host", "smtp.xxxxx.fr");
            props.setProperty("mail.port", "25");
            props.setProperty("mail.smtp.auth", "true");
            Session sessionmail = Session.getDefaultInstance(props, new Authenticator(){
                    @Override
             protected PasswordAuthentication getPasswordAuthentication() {
             return new PasswordAuthentication(username, password);
             }
             });
     
            sessionmail.setDebug(true);
            try {
                javax.mail.Message mesg = new MimeMessage(sessionmail);
                mesg.setFrom(new InternetAddress(username));
                System.out.println("*****Adresse TO ****");
                mesg.addRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress("xxxxx@xxxxx.fr"));
                mesg.setSubject("mailObjet");
                mesg.setText("mailText");
     
                Transport transport = sessionmail.getTransport("smtp");
                System.out.println("transport: "+transport.getURLName());
                transport.connect("smtp.xxxxx.fr",username, password);
                transport.sendMessage(mesg, mesg.getAllRecipients());
                transport.close();
                System.out.println("*****mail is sent****");
                System.out.println(" sortie fonction SenderMail----->");
            } catch (MessagingException ex) {
                System.out.println("*****exception****");
            while ((ex = (MessagingException)ex.getNextException()) != null) {
            ex.printStackTrace();
            }
            }
    }
    quand je lance ma fonction j'ai cette erreur:

    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
    user :logexploit@equinoxe-software.fr
    password :equinoxe
    DEBUG: setDebug: JavaMail version 1.4.1
    *****Adresse TO ****
    DEBUG: mail.smtp.class property exists and points to com.sun.mail.smtp.SMTPTransport
    transport: smtp:
    DEBUG SMTP: useEhlo true, useAuth true
    DEBUG SMTP: trying to connect to host "smtp.xxxxx.fr", port 25, isSSL false
    DEBUG SMTP: exception reading response: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
    *****exception****
    MQRA:OMR:run:Caught Exception from onMessage():Redelivering:message-driven bean method public abstract void javax.jms.MessageListener.onMessage(javax.jms.Message) system exception
    MQRA:OMR:run:Exhausted redeliveryAttempts-msg=com.sun.messaging.jms.ra.DirectTextPacket@73534
    MQRA:OMR:run:Exhausted redeliveryAttempts-spec=ActvationSpec configuration=
            DestinationType                     =javax.jms.Queue
            Destination                         =PhysicalQueue
            MessageSelector                     =null
            AcknowledgeMode                     =Auto-acknowledge
            SubscriptionDurability              =NonDurable
            ClientId                            =null
            SubscriptionName                    =null
            EndpointPoolMaxSize                 =32
            EndpointPoolSteadySize              =0
            EndpointPoolResizeCount             =8
            EndpointPoolResizeTimeout           =600
            EndpointExceptionRedeliveryAttempts =1
            EndpointExceptionRedeliveryInterval =500
            SendUndeliverableMsgsToDMQ          =true
            GroupName                           =null
            RAUID                               =null
            InClusteredContainer                =false
            MdbName                             =null
            UserName                            =null
            EnableDirect                        =true
            AddressList (in effect)             =localhost:7676
    MQRA:OMR:run:Message returned & marked for routing to the DMQ
    MQRA:OMR:run:omrId=0:Acked Undeliverable-Msg=com.sun.messaging.jms.ra.DirectTextPacket@73534
    MDB00037 : [TrainingApp2:NewUserMailMDBean]: Exception d'appel du bean message-driven : [javax.ejb.EJBException]
    javax.ejb.EJBException
    javax.ejb.EJBException
            at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:3894)
            at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:3794)
            at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:3596)
            at com.sun.ejb.containers.MessageBeanContainer.afterMessageDeliveryInternal(MessageBeanContainer.java:1226)
            at com.sun.ejb.containers.MessageBeanContainer.afterMessageDelivery(MessageBeanContainer.java:1197)
            at com.sun.ejb.containers.MessageBeanListenerImpl.afterMessageDelivery(MessageBeanListenerImpl.java:79)
            at com.sun.enterprise.connectors.inflow.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:139)
            at $Proxy53.afterDelivery(Unknown Source)
            at com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:324)
            at com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:76)
            at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555)
    Caused by: java.lang.ClassCastException: javax.net.ssl.SSLException
            at com.otherway.training.ejb3.mdb.NewUserMailMDBean.onMessage(NewUserMailMDBean.java:79)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:585)
            at com.sun.enterprise.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1011)
            at com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:175)
            at com.sun.ejb.containers.BaseContainer.invokeTargetBeanMethod(BaseContainer.java:2920)
            at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4011)
            at com.sun.ejb.containers.MessageBeanContainer.deliverMessage(MessageBeanContainer.java:1111)
            at com.sun.ejb.containers.MessageBeanListenerImpl.deliverMessage(MessageBeanListenerImpl.java:74)
            at com.sun.enterprise.connectors.inflow.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:179)
            at $Proxy53.onMessage(Unknown Source)
            at com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:258)
            ... 2 more
    Le problème vient surement de l'authentification, mais je trouve pas

    Une idée?

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ton erreur viens de là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ((ex = (MessagingException)ex.getNextException()) != null)
    et elle cache l'erreur réelle. Rine ne te garanti que ex.getNextException est un MessagingException. Dans le cas présent, c'est SSLException.

    remplace ton catch par ceci:
    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
     
    } catch (MessagingException ex) {
      System.out.println("*****exception****");
      Exception exception;
      ex.printStackTrace();
      while (true) {
            exception = ex.getNextException();
            if (exception ==null)
                break;
            exception.printStackTrace();  
            if (exception instanceof MessagingException)
                ex = (MessagingException) exception;
            else
                break;
      }

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Par défaut
    merci pour ta réponse hyper rapide!

    j'ai testé en changeant le catch mais j'ai toujours une erreur.

    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
    user :xxxxx@xxxxx.fr
    password :xxxxx
    MQRA:OMR:run:Caught Exception from onMessage():Redelivering:message-driven bean method public abstract void javax.jms.MessageListener.onMessage(javax.jms.Message) system exception
    MQRA:OMR:run:Exhausted redeliveryAttempts-msg=com.sun.messaging.jms.ra.DirectTextPacket@c03bfa
    MQRA:OMR:run:Exhausted redeliveryAttempts-spec=ActvationSpec configuration=
            DestinationType                     =javax.jms.Queue
            Destination                         =PhysicalQueue
            MessageSelector                     =null
            AcknowledgeMode                     =Auto-acknowledge
            SubscriptionDurability              =NonDurable
            ClientId                            =null
            SubscriptionName                    =null
            EndpointPoolMaxSize                 =32
            EndpointPoolSteadySize              =0
            EndpointPoolResizeCount             =8
            EndpointPoolResizeTimeout           =600
            EndpointExceptionRedeliveryAttempts =1
            EndpointExceptionRedeliveryInterval =500
            SendUndeliverableMsgsToDMQ          =true
            GroupName                           =null
            RAUID                               =null
            InClusteredContainer                =false
            MdbName                             =null
            UserName                            =null
            EnableDirect                        =true
            AddressList (in effect)             =localhost:7676
    MQRA:OMR:run:Message returned & marked for routing to the DMQ
    MQRA:OMR:run:omrId=0:Acked Undeliverable-Msg=com.sun.messaging.jms.ra.DirectTextPacket@c03bfa
    MDB00037 : [TrainingApp2:NewUserMailMDBean]: Exception d'appel du bean message-driven : [javax.ejb.EJBException]
    javax.ejb.EJBException
    javax.ejb.EJBException
            at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:3894)
            at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:3794)
            at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:3596)
            at com.sun.ejb.containers.MessageBeanContainer.afterMessageDeliveryInternal(MessageBeanContainer.java:1226)
            at com.sun.ejb.containers.MessageBeanContainer.afterMessageDelivery(MessageBeanContainer.java:1197)
            at com.sun.ejb.containers.MessageBeanListenerImpl.afterMessageDelivery(MessageBeanListenerImpl.java:79)
            at com.sun.enterprise.connectors.inflow.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:139)
            at $Proxy60.afterDelivery(Unknown Source)
            at com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:324)
            at com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:76)
            at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555)
    Caused by: java.lang.SecurityException: Access to default session denied
            at javax.mail.Session.getDefaultInstance(Session.java:321)
            at com.otherway.training.ejb3.mdb.NewUserMailMDBean.onMessage(NewUserMailMDBean.java:54)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:585)
            at com.sun.enterprise.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1011)
            at com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:175)
            at com.sun.ejb.containers.BaseContainer.invokeTargetBeanMethod(BaseContainer.java:2920)
            at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4011)
            at com.sun.ejb.containers.MessageBeanContainer.deliverMessage(MessageBeanContainer.java:1111)
            at com.sun.ejb.containers.MessageBeanListenerImpl.deliverMessage(MessageBeanListenerImpl.java:74)
            at com.sun.enterprise.connectors.inflow.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:179)
            at $Proxy60.onMessage(Unknown Source)
            at com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:258)
            ... 2 more
    Mais je pense que tu as résolue une erreur.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    pourquoi tu utilise Session.getDefaultInstance() alors que, visiblement vu ton code, t'es supposé utiliser ça @Resource(name="mail/equinoxe-software")?

  5. #5
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Par défaut
    Oui je dois m'emmêler un peu les pinceaux.
    Que doit-je utiliser alors?

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    manifestement, tu dois utiliser le champ privé session, au vu de la configuration de ton EJB.

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

Discussions similaires

  1. Envoi simple de mail avec authentification
    Par fear-69 dans le forum Java ME
    Réponses: 1
    Dernier message: 02/02/2010, 15h14
  2. [javamail] envoi mail avec message en pièce jointe
    Par k4eve dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 16/11/2007, 11h17
  3. [Javamail] Envoi mail avec plusieurs smtp
    Par igloof dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 02/11/2006, 12h08
  4. envoi de mail avec authentification
    Par jfb53 dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/08/2006, 12h23
  5. [TIdSMTP] Envoi d'un mail avec authentification ?
    Par BACUS dans le forum C++Builder
    Réponses: 4
    Dernier message: 16/06/2004, 16h18

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