java实现邮件中插入批量图片

首先是MimeMessage这个类,继承于javax.mail.Message,底下还有IMAPMessage、POP3Message、SmartMimeMessage、SMTPMessage等实现,这里就不扯源码那么远了。

进入正题怎么用:

MimeMessage msg = new MimeMessage(session);
/**
 * 设置收件人抄送人标题等此处省略
 */
// 构造Multipart
MimeMultipart mp = new MimeMultipart();
// 向Multipart添加正文
MimeBodyPart mbpContent = new MimeBodyPart();
mbpContent.setContent(content+"<img src=\'cid:"+picName+"'></img></br>", "text/html;charset=utf-8");
MimeBodyPart img = new MimeBodyPart();  
DataHandler dh = new DataHandler(new FileDataSource(path);//path代表图片路径  
img.setDataHandler(dh);  
// 创建图片的一个表示用于显示在邮件中显示  
img.setContentID(picName);//对应上正文里的cid名
mp.addBodyPart(img);
mp.addBodyPart(mbpContent);
mp.setSubType("related"); 
msg.setContent(mp);
// 发送邮件
Transport.send(msg);

关于mp.setSubType("related");

这个参数可以设置related和mixed分别代表正文中插入和正文后附件形式,

(不写默认是mixed因为源码构造函数设置了mixed)

实现批量插入图片

实际上就是讲cid命名为循环下标

生成邮件正文时

for (int i = 0; i < paths.size(); i++) {
	htmlContent = htmlContent+"<img src=\'cid:"+i+"'></img></br>";
}


发送中

            File[] filelist = file.listFiles();
			if(filelist!=null) {
				for(int i=0;i<filelist.length;i++) {
					MimeBodyPart img = new MimeBodyPart();  
					DataHandler dh = new DataHandler(new FileDataSource(filelist[i]));//图片路径  
					img.setDataHandler(dh);  
					// 创建图片的一个表示用于显示在邮件中显示  
					img.setContentID(i+"");  
					mp.addBodyPart(img);
			}
				
                mp.addBodyPart(mbpContent);
                mp.setSubType("related");
			}else {
				mp.addBodyPart(mbpContent);
			}


猜你喜欢

转载自blog.csdn.net/Suviky/article/details/79914119