2012-03-30 61 views
1

我想知道如何通过Java程序发送图像到邮件。我可以发送文本和图像,但它显示为附加文件.. 我想这应是我的文字的过去...... 下面是我用通过Java程序发送图像到邮件而不附加?

// Create new message with mail session. 
Message message = new MimeMessage(session); 

// Create multipart message. 
MimeMultipart multipart = new MimeMultipart(); 

// Create bodypart. 
BodyPart bodyPart = new MimeBodyPart(); 

// Create the HTML with link to image CID. 
// Prefix the link with "cid:". 
String str = "<html><h1>Hello</h1>" + 
      "<img src=\"cid:image_cid\"></html>"; 

// Set the MIME-type to HTML. 
bodyPart.setContent(str, "text/html"); 

// Add the HTML bodypart to the multipart. 
multipart.addBodyPart(bodyPart); 

// Create another bodypart to include the image attachment. 
bodyPart = new MimeBodyPart(); 

// Read image from file system. 
DataSource ds = new FileDataSource("C:\\images\\image.png"); 
bodyPart.setDataHandler(new DataHandler(ds)); 

// Set the content-ID of the image attachment. 
// Enclose the image CID with the lesser and greater signs. 
bodyPart.setHeader("Content-ID", "<image_cid>"); 

// Add image attachment to multipart. 
multipart.addBodyPart(bodyPart); 

// Add multipart content to message. 
message.setContent(multipart); 

// Now set the header and send the email. 
... 

,请告诉我,如果任何人知道。 。

感谢进阶

回答

4

所有你在做什么是正确的,我使用Gmail和我需要点击“显示图片”看到邮件的图像,你可以添加以下网上看到的图像:

mbp2.setFileName("image.png"); 

我完整的代码看起来就像这样:

// create a message 
    MimeMessage msg = new MimeMessage(session); 
    msg.setRecipients(Message.RecipientType.TO, to); 
    msg.setSubject(subject); 

    // create and fill the first message part 
    MimeBodyPart mbp1 = new MimeBodyPart(); 
    mbp1.setContent(bodyText, "text/html"); 

    // create the second message part 
    MimeBodyPart mbp2 = new MimeBodyPart(); 
    // attach the file to the message 
     DataSource source = new FileDataSource(new File("image.png")); 
     mbp2.setDataHandler(new DataHandler(source)); 
     mbp2.setFileName("image.png"); 
     mbp2.setHeader("Content-ID", "<image_cid>"); // cid:image_cid 
    // create the Multipart and add its parts to it 
    Multipart mp = new MimeMultipart(); 
    mp.addBodyPart(mbp1); 
    mp.addBodyPart(mbp2); 
    // add the Multipart to the message 
    msg.setContent(mp); 
    // send the message 
    Transport.send(msg); 

和HTML邮件正文是这样的:

bodyText = "<p><img style='float:right' src='cid:image_cid'>Hello World example</p>"; 
相关问题