2012-09-18 26 views
2

我是新来的java邮件。我想发送带有图像附件的邮件。我已经尝试了下面的代码来附加邮件的图像。如何用java中的邮件上传图片附件?

BodyPart messageBodyPart = new MimeBodyPart(); 

       if (content == null) { 
        messageBodyPart.setText(""); 
       } else { 
        messageBodyPart.setText(content); 
       } 

       // Create a multipar message 
       Multipart multipart = new MimeMultipart(); 

       // Set text message part 
       multipart.addBodyPart(messageBodyPart); 

       // Part two is attachment 
       // messageBodyPart = new MimeBodyPart(); 
       DataSource source = new ByteArrayDataSource(
         attachedFile2.getBytes("UTF-8"), 
         "application/octet-stream"); 

       //attachedFile2 is the filename of image. 
       messageBodyPart = new MimeBodyPart(); 

       messageBodyPart.setDataHandler(new DataHandler(source)); 
       messageBodyPart.setFileName(attachedFile2); 
       multipart.addBodyPart(messageBodyPart); 
       message.setContent(multipart); 

此代码正在工作。邮件与图像附件一起收到。但问题在于,图像以不支持的格式显示或不显示原始图像。

我不知道如何解决这个问题。

请帮助我..提前

谢谢..

+0

你设置MIME类型为'应用程序/八位字节stream' - 不它看起来更好,如果你使用'图像/ PNG'或任何适合的图像格式? –

+0

请分享一些例子。 –

+0

javax.mail库 –

回答

0

你可以试试这个:

private void addImageResource(final MimeMultipart content, final String resourceName, 
    final String resourceTitle) throws MessagingException, IOException { 
    MimeBodyPart msgBodyPart = new MimeBodyPart(); 
    URL imgURL = getClass().getClassLoader().getResource(resourceName); 
    final DataSource dsImg = new FileDataSource(imgURL.getFile()); 
    msgBodyPart.setDataHandler(new DataHandler(dsImg)); 
    msgBodyPart.setHeader("Content-ID", resourceTitle); 
    content.addBodyPart(msgBodyPart); 
} 
+0

上面的代码不起作用 –

+0

你的错误是什么?此示例是从我日常使用的某个应用程序中提取的。 – yodamad

+0

图像文件已正确连接并发送至邮件。但附加的图像没有正确显示。它显示为邮件中的破损文件。 –

相关问题