[JAVA] Help! upload + envoi d'email avec pièce jointe

Help! upload + envoi d'email avec pièce jointe [JAVA] - Java - Programmation

Marsh Posté le 31-10-2002 à 10:39:25    

Mon but : uploader un fichier sur un serveur Tomcat et l'envoyer par email en attachment
 
 
L'upload :
 

Code :
  1. System.out.println ("Début de l'upload" );
  2.  // Variables
  3.  int count=0;
  4.  SmartUpload mySmartUpload = new SmartUpload();
  5.  try {
  6.   // Initialization
  7.   mySmartUpload.initialize (config,request,response);
  8.   System.out.println ("initialisation effectuée" );
  9.   // Upload
  10.   mySmartUpload.upload();
  11.   com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0);
  12.   // Display the result
  13.   System.out.println(count + " file uploaded." );
  14.   SendMail monMail = new SendMail ("exemple@yahoo.fr", "monSujet", "monTexte", myFile);
  15.   System.out.println("Instantiation Sendmail" );
  16.   monMail.send();
  17.   System.out.println ("Envoi du mail" );
  18.  } catch (Exception e){...
  19.  }
  20. }


 
 
 
 
 
La fonction send() :
 

Code :
  1. ublic void send()   throws java.io.IOException {  //destinataire du mail
  2. String to = getTo();
  3. //expediteur du mail
  4. String from = getFrom();
  5. //passerelle smtp
  6. String smtphost = getSmtpHost();
  7. //message
  8. String msgText1= getText();
  9. //sujet
  10. String sujet = getSubject();
  11. //attachment
  12. System.out.println("Variables initialisées" );
  13. //****************************************************
  14. // create some properties and get the default Session
  15. java.util.Properties props = System.getProperties();
  16. props.put("mail.smtp.host", smtphost);
  17. javax.mail.Session session = javax.mail.Session.getDefaultInstance(props, null);
  18. try {
  19.  // creation du message
  20.  // la 1ere partie du message, c'est le corps du message
  21.  // la 2eme c'est la piece jointe
  22.  javax.mail.internet.MimeMessage msg = new javax.mail.internet.MimeMessage(session);
  23.  msg.setFrom(new javax.mail.internet.InternetAddress(from));
  24.  javax.mail.internet.InternetAddress[] address = {new javax.mail.internet.InternetAddress(to)};
  25.  msg.setRecipients(javax.mail.Message$RecipientType.TO, address);
  26.  msg.setSubject(sujet);
  27.  // creation de la partie texte
  28.  javax.mail.internet.MimeBodyPart mbp1 = new javax.mail.internet.MimeBodyPart();
  29.  mbp1.setText(msgText1);
  30.  // creation de la deuxieme partie
  31.  javax.mail.internet.MimeBodyPart mbp2 = new javax.mail.internet.MimeBodyPart();
  32.  
  33. // on attache le fichier
  34.  mbp2.setDataHandler(new javax.activation.DataHandler(uploadedFile, uploadedFile.getSubTypeMIME()));
  35.  mbp2.setFileName(uploadedFile.getFileName());
  36.  // creation du Multipart et on y met les 2 parts
  37.  javax.mail.Multipart mp = new javax.mail.internet.MimeMultipart();
  38.  mp.addBodyPart(mbp1);
  39.  mp.addBodyPart(mbp2);
  40.  // ajout du Multipart au message
  41.  msg.setContent(mp);
  42.  // envoi du message
  43.  javax.mail.Transport.send(msg);
  44. }
  45. catch (javax.mail.MessagingException mex) {...
  46. }


 
Problème : ça marche pas. C l'attachement du fichier qui foire, la partie en gras. ça fait un moment ke je cherche, j'y arrive pas. La fonction, le constructeur DataHandler accepte en paramètre un Object et un MIMEType. Je ne sais pas koi lui fournir, notamment pour l'objet.
 
Quelqu'un a déjà fait ça?


Message édité par Zeplusoif le 31-10-2002 à 10:42:53
Reply

Marsh Posté le 31-10-2002 à 10:39:25   

Reply

Marsh Posté le 31-10-2002 à 10:51:17    

ouais ... Tout dépend quel genre de fichier tu es censé uploader mais le truc c'est de construire le fichier proprement à l'upload. C'est pas la partie mail qui doit faire ca.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 31-10-2002 à 10:57:49    

DarkLord a écrit a écrit :

ouais ... Tout dépend quel genre de fichier tu es censé uploader mais le truc c'est de construire le fichier proprement à l'upload. C'est pas la partie mail qui doit faire ca.




 
J'aimerais éviter d'écrire le fichier uploadé en dur. J'utilise le type java.jspsmart.upload.File qui stocke en mémoire. Je peux éalement récupérer ce fichier en stream par la fonction File.getContentString(). Mais même ça, ça marche pas...
 
ça doit bien être possible pourtant

Reply

Marsh Posté le 31-10-2002 à 10:58:36    

bin ca fait quoi déjà. Parce que décrire un problème avec du code et terminer pas un gros "ca marche pas", ca ne nous avance pas bcp ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 06-11-2002 à 13:14:25    

Solution :
 

Code :
  1. InternetHeaders headers =
  2.                      new InternetHeaders();
  3.                   MimeBodyPart bodyPart =
  4.                      new MimeBodyPart();
  5.                   DataSource ds =
  6.                      new ByteArrayDataSource(
  7.                         buffer.toByteArray(),
  8.                         contentType,filename);
  9.                   bodyPart.setDataHandler(
  10.                      new DataHandler(ds));
  11.                   bodyPart.setDisposition(
  12.                      "attachment; filename=\"" +
  13.                      filename + "\"" );
  14.                   bodyPart.setFileName(filename);


 
 
Code entier sur http://www.developer.com/java/other/article.php/618471

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed