Javamail邮件解析如何显示文本框内的图片
@红薯 你好,想跟你请教个问题:这个问题之前也被问过很多次了,但是依旧没有给出答案,希望你能帮帮忙解决一下,万分感谢!就是邮件文本框包含图片,但是通过解析出来不能显示图片,得出的是类似这样的<img src='cid:xxxxx'>,但是复制网页上的图片可以显示,看到之前你回复的一个贴子说是可以通过标识转换可以达到效果,但是我没有实现。你说一般在解析到 Multipart 部分的时候都会有一个标识对应这个cid的,首先把 Multipart 保存到图片文件,然后生成一个对应的图片URL地址,用来替换这个cid 。但是如何找到这个cid的图片呢?请赐教!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
求解决方法啊
我的问题已经解决,谢谢大家的帮忙!
这个不难,下面是可以运行的例子:
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();
}
}
不是很明白,纯帮顶
@红薯 真万能系列
@虫虫 你的分身哦