javamail 发送邮件图片无法显示问题
经过测试在qq邮箱中可以正常显示如图:
而用新浪或者搜狐的邮箱就无法正常显示如图:
相关的代码如下,求大神指导
// 创建和环境有关的Session对象. 该session对象中包含了连接邮件服务器的地址.. 端口.. 协议
Properties properties = new Properties();
// 指定发送的协议
properties.setProperty("mail.smtp.auth", "true");
properties.setProperty("mail.transport.protocol", "smtp");
// 指定邮件服务器的地址
// properties.setProperty("mail.host", "smtp.qq.com");
// 通过javamail发送邮件的时候,会把具体的发送命令打印出来
// properties.setProperty("mail.debug", "true");
Session session = Session.getDefaultInstance(properties);
// 创建一个代表一封邮件的Message对象
Message message = new MimeMessage(session);
// 设置发件人...
try {
message.setFrom(new InternetAddress("1576091527@qq.com"));
/** BCC:密送CC:抄送To:发送 */
// message.setRecipient(RecipientType.TO, new
// InternetAddress("1576091527@qq.com,1367384576@qq.com"));
message
.setRecipients(
RecipientType.TO,
InternetAddress
.parse("1576091527@qq.com,zhouxingruoxu@sohu.com,zhouxingruoxu@sina.com"));
// 设置邮件的主题
message.setSubject("这是一个简单的邮件");
Multipart multipart = new MimeMultipart("mixed");
// 创建一个装显示图片的html
MimeBodyPart html = new MimeBodyPart();
// 要使用cid来指定具体的资源id
html.setContent("<img src='cid:123456'><br>" + htmlString + "",
"text/html;charset=UTF-8");
// 创建一个图片的mimebodypart
MimeBodyPart image = new MimeBodyPart();
// 将一个图片做具体的数据出过来
image.setDataHandler(new DataHandler(new FileDataSource(new File(
"F:\\张邮件\\3.jpg"))));
image.setContentID("123456");
multipart.addBodyPart(html);
multipart.addBodyPart(image);
// 设置一个复杂类型的邮件内容
message.setContent(multipart);
// 可以通过Session对象找得到发送对象Transport...
Transport transport = session.getTransport();
// 通过发送对象去连接邮件服务器... 提供链接服务器的用户名而不是邮件的地址,不带@符号的
// transport.connect("1576091527", "1610745319521");
transport.connect("smtp.qq.com", 25, "1576091527", "1610745319521");
// 连接上后发送邮件(Message),发送给指定的地址
transport.sendMessage(message, message.getAllRecipients());
// 关闭连接
transport.close();
} catch (Exception e) {
e.printStackTrace();
}
}
------解决方案--------------------不懂,帮顶
------解决方案--------------------发这种邮件,我一般都不把图片放到邮件里面,而是把图片先上