Bonjour,
Je développe une application web en java (utilisation de struts)
et je souhaite envoyer un mail en automatique en utilisant
un serveur messagerie qui nécessite une authentification
J'obtiens l'erreur suivante.
Citation:
javax.servlet.ServletException
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:459)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
cause mère
javax.mail.AuthenticationFailedException
javax.mail.Service.connect(Service.java:319)
javax.mail.Service.connect(Service.java:169)
javax.mail.Service.connect(Service.java:118)
javax.mail.Transport.send0(Transport.java:188)
javax.mail.Transport.send(Transport.java:118)
dcmat.commit.ValidDemTraitant.execute(ValidDemTraitant.java:101)
org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:53)
org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:64)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:48)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:280)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:459)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
J'utilise un serveur Apache Tomcat 5.5
dans le répertoire apache/common/lib, j'ai les librairies suivantes : activation.jar, mail.jar, mailapi.jar
Le fichier appli.xml sous Tomcat 5.5\conf\Catalina\localhost est le suivant:
Dans le fichier web.xml de mon appli :Code:
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 <?xml version="1.0" encoding="ISO-8859-1"?> <!-- <Context path="/commit1" reloadable="true" > --> <Context docBase="${catalina.home}/webapps/commit1" privileged="true" antiResourceLocking="false" antiJARLocking="false"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="commit1_log." suffix=".txt" pattern="combined" resolveHosts="false"/> <Resource name="jdbc/commit1" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://dev-tst:3306/Commit?autoReconnect=true" auth="Container" username="xxx" password="xxxx" maxActive="20" maxIdle="8" maxWait="10000" minActive="8" removeAbandoned="true" removeAbandonedTimeout="5000" /> <Resource name="mail/Session" type="javax.mail.Session" auth="Container" mail.smtp.host="160.133.xxx.xx" mail.smtp.port="25" mail.smtp.auth="true" mail.smtp.user="xxxx" mail.smtp.password="xxxx" /> </Context>
Mon code source :Code:
1
2
3
4
5
6
7 <resource-ref> <description> mail </description> <res-ref-name>mail/Session</res-ref-name> <res-type>javax.mail.Session</res-type> <res-auth>Container</res-auth> </resource-ref>
J'ai testé mon programme sur un serveur de messagerie qui ne demande pas d'authentification et là tout fonctionne je n'ai pas d'erreur.Code:
1
2
3
4
5
6
7
8
9
10
11
12 Context initialCtx = new InitialContext(); Context localCtx = (Context) initialCtx.lookup("java:comp/env"); javax.mail.Session session = ( javax.mail.Session )localCtx.lookup("mail/Session"); Message msg = new MimeMessage(session); msg.setFrom(new InternetAddress("traitant@xxxx.fr")); InternetAddress toAdress = new InternetAddress("xxxxr@xxx.fr"); msg.addRecipient(Message.RecipientType.TO, toAdress); msg.setSubject("Demande " + request.getParameter("cidem") + " livrée "); msg.setContent("La demande " + request.getParameter("cidem") + " a été livrée le : " + request.getParameter("dtlivre") , "text/plain"); Transport.send(msg);
Je n'arrive pas à situer l'erreur est-ce que cela vient du serveur de messagerie demandant l'authentification ou de mon appli ?
je ne gère pas les serveurs de messagerie c'est le domaine de l'administrateur réseau
je lui ai transmis mon problème mais pour lui il n'y a pas de problème côté serveur, il a autorisé l'adresse IP de mon serveur sur son serveur de messagerie, j'utilise bien les bons user et le password.
Je ne sais plus où chercher.
Merci de votre aide