2012-03-30 97 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>"; 
相關問題