我想知道如何通过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.
...
Run Code Online (Sandbox Code Playgroud)
请告诉我是否有人知道..
感谢在副词
您正在执行的所有操作都是正确的,我使用的是gmail,我需要点击“显示图片”以查看电子邮件中的图片,您可以添加以下行以查看图片:
mbp2.setFileName("image.png");
Run Code Online (Sandbox Code Playgroud)
我的完整代码如下所示:
// 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);
Run Code Online (Sandbox Code Playgroud)
和html消息正文是这样的:
bodyText = "<p><img style='float:right' src='cid:image_cid'>Hello World example</p>";
Run Code Online (Sandbox Code Playgroud)