Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

WEB SERVICE AXIS TOMCAT 5.5.9: probleme pour envoyer un mail avec une piece jointe et du text

5 réponses
Avatar
Cyril
Bonjour,

J'ai un problème pour envoyer un mail avec du text et une piece joint à
partir d'un WEB SERVICE.

Ma classe a une fonction sendMsgAttachement qui envoie un mail avec une
piece joint et du text. Cette fonctionnalité fonctionne trés dans un
environnement local c'est à dire lors que je l'exécute avec un void main
mais lorsque j'ai transformé ma classe en WEB SERVICE (AXIS) je reçois
des mail avec le contenu vide. Merci de votre aide.

Voici la fct:

private boolean sendMsgAttachFile(String _to, String _subject, String
_bodyText, String _fileName, int iddoc) {
Properties props = new Properties();
props.setProperty("mail.smtp.host", smtp);

if (elogin != null && epass != null )
{
elogin.trim();
epass.trim();
//props.setProperty("mail.smtp.auth", "true");
//Authenticator auth = new SMTPAuthenticator();
//session = Session.getDefaultInstance(props, auth);
session = Session.getDefaultInstance(props,null);
} else {
session = Session.getDefaultInstance(props,null);
}
try {
File path_name = new File(RepCryptFile + _fileName);
if (path_name.exists()) {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(emaildefault));
InternetAddress[] address ={new InternetAddress(_to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(_subject);
MimeBodyPart textPart = new MimeBodyPart();
//textPart.setHeader("Content-Transfert-Encoding", "8Bit");
textPart.setText(_bodyText);
MimeBodyPart attachFilePart = new MimeBodyPart();
FileDataSource fds = new FileDataSource(RepCryptFile + _fileName);
attachFilePart.setDataHandler(new DataHandler(fds));

String name = selectnameoffile(Integer.toString(iddoc));
attachFilePart.setFileName(name);
Multipart mp = new MimeMultipart();
mp.addBodyPart(textPart);
mp.addBodyPart(attachFilePart);
msg.setContent(mp);
Transport.send(msg);
logger.info("The email is sent with file: " + name
+ " mess: " + _bodyText + "file protect: " + RepCryptFile + _fileName);
} else {
logger.info("Error Send Mail: The email not send \n The file
doesn't exit");
return false;
}

} catch(MessagingException ex) {
logger.fatal("Error Send Mail: ", ex);
return false;
} catch(Exception err) {
logger.fatal("Error Send Mail: ", err);
return false;
}
return true;
}

5 réponses

Avatar
TestMan
Bonjour,

J'ai un problème pour envoyer un mail avec du text et une piece joint à
partir d'un WEB SERVICE.

Ma classe a une fonction sendMsgAttachement qui envoie un mail avec une
piece joint et du text. Cette fonctionnalité fonctionne trés dans un
environnement local c'est à dire lors que je l'exécute avec un void main
mais lorsque j'ai transformé ma classe en WEB SERVICE (AXIS) je reçois
des mail avec le contenu vide. Merci de votre aide.

Voici la fct:

private boolean sendMsgAttachFile(String _to, String _subject, String
_bodyText, String _fileName, int iddoc) {
Properties props = new Properties();
props.setProperty("mail.smtp.host", smtp);
<...>

}

} catch(MessagingException ex) {
logger.fatal("Error Send Mail: ", ex);
return false;
} catch(Exception err) {
logger.fatal("Error Send Mail: ", err);
return false;
}
return true;
}


Bonsoir,

J'imagine que vous avez bien dans vos log "The email is sent with file
..." :(

Bon, pas vu de gros blème, en espérant que qqn aura des plus idées ...
en attendant essayez de voir en "pas à pas" avec un debogger dans votre
outil de dev (voir les doc de l'outil et du serveur d'appli).

A+
TM

Avatar
Cyril
Bonjour,

J'ai trouvé la solution. Pour envoie un mail depuis un webservice avec
attachement j'ai du mettre activation.jar dans son WEB-INF/lib même s'il
existait déjà dans le comm/lib de Tomcat.


Bonjour,

J'ai un problème pour envoyer un mail avec du text et une piece joint
à partir d'un WEB SERVICE.

Ma classe a une fonction sendMsgAttachement qui envoie un mail avec
une piece joint et du text. Cette fonctionnalité fonctionne trés dans
un environnement local c'est à dire lors que je l'exécute avec un void
main mais lorsque j'ai transformé ma classe en WEB SERVICE (AXIS) je
reçois des mail avec le contenu vide. Merci de votre aide.

Voici la fct:

private boolean sendMsgAttachFile(String _to, String _subject, String
_bodyText, String _fileName, int iddoc) {
Properties props = new Properties();
props.setProperty("mail.smtp.host", smtp);


<...>

}

} catch(MessagingException ex) {
logger.fatal("Error Send Mail: ", ex);
return false;
} catch(Exception err) {
logger.fatal("Error Send Mail: ", err);
return false;
}
return true;
}



Bonsoir,

J'imagine que vous avez bien dans vos log "The email is sent with file
..." :(

Bon, pas vu de gros blème, en espérant que qqn aura des plus idées ...
en attendant essayez de voir en "pas à pas" avec un debogger dans votre
outil de dev (voir les doc de l'outil et du serveur d'appli).

A+
TM



Avatar
TestMan
Bonjour,

J'ai trouvé la solution. Pour envoie un mail depuis un webservice avec
attachement j'ai du mettre activation.jar dans son WEB-INF/lib même s'il
existait déjà dans le comm/lib de Tomcat.


Bonjour,

Super :)

N'y avait-il aucune exception dans les logs (genre
ClassNotFoundException ) ? Si c'est le cas, ça pourrait valoir le coup
d'investiguer la chose pour voir la cause.

A+
TM

Avatar
Cyril
En fait j'ai decouvert le problème car j'utiliser un DataHandler et un
DataSource qui sont dans activation.jar. L'explication tiens sans doute
du fait que Axis travaille dans une virtual machine séparée, certaines
applications font çà pour éviter les conflits (par exemple au niveau de
Xerces ou Xalan)...


Bonjour,

J'ai trouvé la solution. Pour envoie un mail depuis un webservice avec
attachement j'ai du mettre activation.jar dans son WEB-INF/lib même
s'il existait déjà dans le comm/lib de Tomcat.



Bonjour,

Super :)

N'y avait-il aucune exception dans les logs (genre
ClassNotFoundException ) ? Si c'est le cas, ça pourrait valoir le coup
d'investiguer la chose pour voir la cause.

A+
TM



Avatar
TestMan
En fait j'ai decouvert le problème car j'utiliser un DataHandler et un
DataSource qui sont dans activation.jar. L'explication tiens sans doute
du fait que Axis travaille dans une virtual machine séparée, certaines
applications font çà pour éviter les conflits (par exemple au niveau de
Xerces ou Xalan)...


Bonjour,

Une VM séparée, j'en doute si Axis tourne dans Tomcat, mais un
ClassLoader différent (celui de la webapp vs celui de Tomcat), c'est
fort possible ... mais par contre, si la classe n'est pas dans la portée
vous devriez opbtenir un ClassNotFound quelque part (log du serveur par
exemple), or celà n'est pas le cas ! Celà laiss penser qu'un composant
quelque part "absorbe" l'exception ClassNotFound ... assez innatendu
comme comportement.

A+
TM


Bonjour,

J'ai trouvé la solution. Pour envoie un mail depuis un webservice
avec attachement j'ai du mettre activation.jar dans son WEB-INF/lib
même s'il existait déjà dans le comm/lib de Tomcat.



Bonjour,

Super :)

N'y avait-il aucune exception dans les logs (genre
ClassNotFoundException ) ? Si c'est le cas, ça pourrait valoir le coup
d'investiguer la chose pour voir la cause.

A+
TM