javamail发送复杂邮件(包含文本、图片、附件)

           上一篇文章介绍了如何进行简单文本邮件的传输,相信阅读的人都能看懂并收获不少。其实编程这件事情,很多时候就是你听起来一个功能的实现好像很难,但当你着手去实现,去研究他的实现过程的时候就会发现其实也没有想象中那么难。接下来给大家介绍一下如何实现复杂邮件的传输。网上有很多教程,参考了不少,选了比较简洁且容易理解的代码共享出来,以便大家分享。ps:下面代码都是经过自己亲测可行!

        还是跟上一篇文章一样涉及到2个步骤:1.创建一封复杂邮件;2.发送复杂邮件。第2步发送邮件的过程和上一篇一模一样,这边就不多介绍了,详情可见上一篇文章。这边重点说一下第1步创建复杂文件的实现,主要可以分为:①创建图片节点;②创建文本节点;③文本和图片节点结合;④创建附件节点;⑤将(文本+图片)节点和附件节点结合;⑥将整个混合节点添加到邮件内容中,并保存邮件设置。

       接下来直接上代码,代码中都有详细的注释,如果有不清楚或者实现不了的可以自行百度,或者评论进行讨论交流哦~~~!

	public MimeMessage createComplicatedMessage(Session session,String sendMail,String[] receiveMail,String subject,String msgContent) throws Exception{
		 
		MimeMessage message =new MimeMessage(session);
		
		message.setFrom(new InternetAddress(sendMail,"发件人昵称","UTF-8"));
		Address[] addr = new Address[receiveMail.length];
		for(int i=0;i", "text/html;charset=UTF-8");
		
		//将文本和图片节点结合
		MimeMultipart text_image = new MimeMultipart();
		text_image.addBodyPart(text);
		text_image.addBodyPart(image);
		text_image.setSubType("related"); //关联关系 有内嵌资源要定义related
		
		//将混合节点封装成普通节点BodyPart,邮件最终由多个BodyPart组成
		MimeBodyPart text_image_body = new MimeBodyPart();
		text_image_body.setContent(text_image);
		
		//添加附件节点
		MimeBodyPart document = new MimeBodyPart();
		DataHandler dhdoc = new DataHandler(new FileDataSource("d:\\123.doc")); //读取本地文档
		document.setDataHandler(dhdoc);   //将附件数据添加到节点
		document.setFileName(MimeUtility.decodeText(dhdoc.getName())); //设置附件文件名
		
		//设置文本和图片,附件的关系(混合大节点)
		MimeMultipart mm = new MimeMultipart();
		mm.addBodyPart(text_image_body);
		mm.addBodyPart(document);
		mm.setSubType("mixed");  //有附件资源要定义mixed
		
		//最终节点添加到邮件中
		message.setContent(mm);
		message.setSentDate(new Date());
		message.saveChanges();
		
		return message;
	}

       以上是创建复杂邮件的代码,至于如何发送邮件,代码在上一篇文章中,大家可以自行查阅这边就不贴出来了!如果有什么问题或需要补充的,大家可以留言交流。。


你可能感兴趣的:(java相关知识)