JavaMail发送邮件无法显示图片的解决办法
来源:互联网 发布:java 第三方登录 编辑:程序博客网 时间:2024/05/21 17:37
在Java Mail的邮件发送中,所有的邮件客户端都显示正常,但Mac OS邮件客户端无法正常显示图片,仅仅显示一个蓝色的问号图片。
首先按照BS模式与HTML的思维判定问题可能是没有指定图片的类型,于是添加了相应的图片类型说明,如“Content-Type”与“Disposition”,结果问题解决,完全的代码如下:
// 显示图片必须为related,如果还需要添加附件必须为multi// 邮件内容MimeMultipart multipart = new MimeMultipart("related");BodyPart messageBodyPart = new MimeBodyPart();String htmlText = "<img src=\"cid:image\">" + "<p style=\"font-size:16px;\">" + "基于以上原因,我们强烈建议您马上修改密码,<a href=\"http://112.124.25.82:8000/index.html?$$$$\">点我</a>进入密码修改页面。" + "</p>";// 必须明确指定字体为UTF-8,避免中文乱码messageBodyPart.setContent(htmlText, "text/html;charset=utf-8;");multipart.addBodyPart(messageBodyPart);// 添加图片MimeBodyPart imagePart = new MimeBodyPart();DataSource fds = new FileDataSource("/opt/atta.png");imagePart.setDataHandler(new DataHandler(fds));// 设置IDimagePart.setHeader("Content-ID","<image>");imagePart.setHeader("Content-Type", "image/png");imagePart.setDisposition(MimeBodyPart.INLINE);imagePart.setFileName("image.png");// 添加内容multipart.addBodyPart(imagePart);
但奇怪的现象又出现了,IPhone的邮件客户端又无法显示图片,效果如下:
自己试着对比了能正常显示的邮件与异常邮件,发现DOM稍有差异,于是修改为如下格式:
<div> <img src=\"cid:image\"> </div><div> </div>
但手机邮件客户端的图片依旧无法显示。
继续排查,唯一的疑点就在与邮件的名称与“Content-ID”,于是将相关的“image”改为其他名称,如“attach”,如下:
// 第一个修改的地方String htmlText = "<img src=\"cid:attach\">" + "<p style=\"font-size:16px;\">" + "基于以上原因,我们强烈建议您马上修改密码,<a href=\"http://112.124.25.82:8000/index.html?$$$$\">点我</a>进入密码修改页面。" + "</p>";// 第二个修改的地方imagePart.setHeader("Content-ID","<attach>");// 第三个修改的地方imagePart.setFileName("attach.png");
最后IPhone手机客户端能准确显示邮件图片。
结论
要想正确显示邮件的图片内容,必须做到如下几点:
1. MimeMultipart的类型必须是“related”(new MimeMultipart(“related”));
2. 图片的显示方式必须为“INLINE”(Disposition=MimeBodyPart.INLINE);
3. 必须明确指定“Content-Type”头信息(Content-Type=image/png);
4. 图片名称与“Content-ID”绝不能为“image”(可能为关键字);
参考资料
- 《MIME中的Multipart/mixed》 2.
阅读全文
0 0
- JavaMail发送邮件无法显示图片的解决办法
- 【JavaMail开发】使javamail-1.4.2 发送邮件时中文附件乱码或显示"??"的解决办法
- javamail 发送内容为图片的邮件
- JAVAMAIL发送邮件正文是html格式并且显示图片还带有附件的邮件
- JAVAMAIL发送邮件正文是html格式并且显示图片还带有附件的邮件
- JavaMail发送带图片正文的邮件,outlook等邮箱不显示的问题
- JavaMail邮件的发送
- JavaMail的发送邮件
- JavaMail邮件的发送
- javaMail邮件发送模版(实现图片、附件的添加)
- JavaMail实现带附件和图片的邮件发送功能
- centos 无法发送邮件的解决办法
- tomcat使用javamail发送邮件失败解决办法
- javamail发送邮件的例子
- javamail 实现邮件的发送
- 单纯的 JavaMail 发送邮件
- 简单的JavaMail邮件发送
- javamail发送邮件的demo
- 比较文本差异diff 命令
- FDA
- c++中STL的算法
- 终极影视之ONE PIECE动漫简介
- faster-rcnn (1):unbantu下安装 anaconda +tensorflow版本的 faster-rcnn
- JavaMail发送邮件无法显示图片的解决办法
- 设计模式学习初期提示
- angualar angular-cli angular命令
- 2017/10
- java获取当前时间前一周、前一月、前一年的时间
- 最大子矩阵和
- js实现可输入的下拉框
- ios自带录音格式(caf)转MP3格式
- JAVA中StringBuffer类常用方法详解