2009-06-10 9 views
0

Je souhaite envoyer du courrier avec une image incorporée. Pour cela, j'ai utilisé le code ci-dessous. Ce n'est pas du code complet. Sa partie du Code
Envoi de courrier avec une image intégrée à l'aide de javamail

 Multipart multipart = new MimeMultipart("related"); 
     // Create the message part 
     BodyPart messageBodyPart; 
     messageBodyPart = new MimeBodyPart(); 
     messageBodyPart.setText(msgBody); // msgbody contains the contents of the html file 
     messageBodyPart.setHeader("Content-Type", "text/html"); 
     multipart.addBodyPart(messageBodyPart); 

     //add file attachments 
     DataSource source; 
     File file = new File("D:/sample.jpeg"); 
     if(file.exists()){ 
      // add attachment 
      messageBodyPart = new MimeBodyPart(); 
      source = new FileDataSource(file); 
      messageBodyPart.setDataHandler(new DataHandler(source)); 
      messageBodyPart.setFileName(file.getName()); 
      messageBodyPart.setHeader("Content-ID", "<BarcodeImage>"); 
      messageBodyPart.setDisposition("inline"); 
      multipart.addBodyPart(messageBodyPart); 
     } 

     // Put parts in message 
     msg.setContent(multipart); 
     Transport.send(msg); 

problème que je suis face est, je peux aller chercher le courrier, mais ne peux pas Acle pour voir l'image .. Son sont pas afficher dans le courrier.
ci-dessous est ma partie du fichier html

   <img src=\"cid:BarcodeImage\" alt="Barcode" width="166" height="44" align="right" /> 

S'il vous plaît aidez-moi pourquoi l'image ne s'affiche dans le courrier et pourquoi il est pas dans la pièce jointe ??

+0

avez-vous vérifié que le bloc de pièce jointe d'ajout est appelé, c.-à-d. que le fichier existe? – objects

+0

ouais son exécution .. J'ai mis les lignes sop n vérifié .. ce bloc est en cours d'exécution. –

Répondre

0

Essayez de se débarrasser de la ligne suivante:

messageBodyPart.setDisposition("inline"); 
+0

Une façon plus générique de le faire est 'messageBodyPart.setDisposition (MimeBodyPart.INLINE)' – Eric

0

Changement new MimeMultipart("related");-new MimeMultipart(); (et éventuellement msg.setContent(multipart);-msg.setContent(multipart,"multipart/related");) Assurez-vous aussi changer img src=\"cid:BarcodeImage\"-img src="cid:BarcodeImage". Cela devrait fonctionner ensuite.

-1

Je suis tombé sur le même problème. Après après m'a beaucoup aidé: How to send email with embedded images using Java La partie la plus importante du code est:

String cid = generateCID(); 
MimeBodyPart textPart = new MimeBodyPart(); 
textPart.setText("<html><head>" 
+ "<title>This is not usually displayed</title>" 
+ "</head>n" 
+ "<body><div><strong>Hi there!</strong></div>" 
+ "<div>Sending HTML in email is so <em>cool!</em> </div>n" 
+ "<div>And here's an image: <img src=\"cid:\"" + cid + " /></div>" 
+ "<div>I hope you like it!</div></body></html>", 
"US-ASCII", "html"); 
content.addBodyPart(textPart); 

MimeBodyPart imagePart = new MimeBodyPart(); 
imagePart.attachFile("resources/teapot.jpg"); 
imagePart.setContentID("<" + cid + ">"); 
imagePart.setDisposition(MimeBodyPart.INLINE); 
content.addBodyPart(imagePart); 

doit retourner chaîne unique Fonction generateCID(). Par exemple:

java.util.UUID.randomUUID() 
Questions connexes