Javamail邮件解析如何显示文本框内的图片

虫虫610 发布于 2012/08/30 16:01
阅读 1K+
收藏 0

@红薯 你好,想跟你请教个问题:这个问题之前也被问过很多次了,但是依旧没有给出答案,希望你能帮帮忙解决一下,万分感谢!就是邮件文本框包含图片,但是通过解析出来不能显示图片,得出的是类似这样的<img src='cid:xxxxx'>,但是复制网页上的图片可以显示,看到之前你回复的一个贴子说是可以通过标识转换可以达到效果,但是我没有实现。你说一般在解析到 Multipart 部分的时候都会有一个标识对应这个cid的,首先把 Multipart 保存到图片文件,然后生成一个对应的图片URL地址,用来替换这个cid 。但是如何找到这个cid的图片呢?请赐教!

加载中
0
xu81.com
xu81.com

不是很明白,纯帮顶

@红薯 真万能系列

@虫虫 你的分身哦

0
要做攻城师的志
要做攻城师的志

这个不难,下面是可以运行的例子:

public void  testImageMail(){

//创建和环境有关的Session对象.  该session对象中包含了连接邮件服务器的地址.. 端口.. 协议

 Properties  properties = new Properties();

 //指定发送的协议

 properties.setProperty("mail.transport.protocol", "smtp");

 //指定邮件服务器的地址

 properties.setProperty("mail.host", "127.0.0.1");

 //通过javamail发送邮件的时候,会把具体的发送命令打印出来

 properties.setProperty("mail.debug", "true");

 Session  session = Session.getDefaultInstance(properties);

  //创建一个代表一封邮件的Message对象

 Message  message = new MimeMessage(session);

 //设置发件人...

 try {

message.setFrom(new  InternetAddress("xxxxxx"));

/** BCC:密送CC:抄送To:发送 */

message.setRecipient(RecipientType.TO, new InternetAddress("xxxxxx"));

//设置邮件的主题

message.setSubject("这是一个简单的邮件");

Multipart  multipart = new MimeMultipart("mixed");

//创建一个装显示图片的html

MimeBodyPart  html = new MimeBodyPart();

//要使用cid来指定具体的资源id

html.setContent("<img src='cid:xxxxxxx'>", "text/html");

//创建一个图片的mimebodypart

MimeBodyPart  image = new MimeBodyPart();

//将一个图片做具体的数据出过来

image.setDataHandler(new DataHandler(new FileDataSource(new File("F:\\xxx.gif"))));

image.setContentID("xxxxxxx");

multipart.addBodyPart(html);

multipart.addBodyPart(image);

//设置一个复杂类型的邮件内容

message.setContent(multipart);

//可以通过Session对象找得到发送对象Transport...

Transport  transport = session.getTransport();

//通过发送对象去连接邮件服务器... 提供链接服务器的用户名而不是邮件的地址,不带@符号的

transport.connect("xxxxxx", "xxxxxx");

//连接上后发送邮件(Message),发送给指定的地址

transport.sendMessage(message, message.getAllRecipients());

//关闭连接

transport.close();

 } catch (Exception e) {

e.printStackTrace();

}

}

0
虫虫610
虫虫610
我的问题已经解决,谢谢大家的帮忙!
0
heaven502
heaven502

求解决方法啊


返回顶部
顶部