java邮件开发详解笔记(生成内嵌图片的复杂邮件)

5 篇文章 0 订阅
package zxx.createMessage;

import java.io.FileOutputStream;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
/**
 * 5.9创建一个包含一个内嵌图片的复杂邮件
 * 要点:
 * 		1、创建一个可以存放多种类型的MimeMultipart对象
 * 		2、创建相应数据部分 MimeBodyPart
 * 		3、将每个MimeBodyPart对象添加到MimeMultipart中去
 * 		4、将存放多种数据类型的MimeMultipart放到MimeMessage中去
 * @author 后飞IT
 *
 */
public class PictureMessage {

	public static void main(String[] args) {
		try {
			String from = "hepuchenxiaohang@126.com";
			String to = "hepuchenxiaohang@126.com";
			String subject = "test";
			// 指向的src是一个内嵌的资源 其ContentID=it315_alogo_gif
				//注意写的时候要加上     cid:+ContentId
			String body = "<h4>欢迎大家阅读次邮件</h4>"
					+ "<img src=\"cid:it315_alogo_gif\"/>";

			// 创建一个session实例,用于定义客户端和邮件服务器之间的网络连接信息
			Session session = Session.getDefaultInstance(new Properties());

			// 创建一个MimeMessage实例对象
			MimeMessage msg = new MimeMessage(session);

			// 设置发件人
			msg.setFrom(new InternetAddress(from));
			// 设置收件人
			msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
			// 设置发送日期
			msg.setSentDate(new Date());
			// 设置纯文本的邮件主题
			msg.setSubject(subject);

			// 以下部分是与上面篇章不一样的

			/*
			 * The MimeMultipart class is an implementation of the abstract
			 * Multipart class that uses MIME conventions for the multipart
			 * data.
			 */
			/** 创建一个子类型问ralated的mimemessage的对象 依赖类型的MimeMessage */
			MimeMultipart multipart = new MimeMultipart("ralated");

			/*
			 * 创建一个表示html振文的MimeBodyPart对象,并将它 添加到前面创建的MimeMultipart对象中
			 */
			MimeBodyPart htmlBodyPart = new MimeBodyPart();
			// 将html的内容信息放置到表示一个MIME信息的MimeBodyPart中
			htmlBodyPart.setContent(body, "text/html;charset=gb2312");
			// 之后将这个MIME信息添加到MIMEMESSAGE中去
			multipart.addBodyPart(htmlBodyPart);
			/*
			 * 创建一个表示图片内容的MimeBodyPart对象, 并将它加入到前面创建的MimeMultipart对象中
			 */
			MimeBodyPart gifBodyPart = new MimeBodyPart();
			// 定义一个文件数据源
			FileDataSource fds = new FileDataSource("c:\\1.gif");
			/*
			 * 当mimeBodyPart对象在生成mime消息时,调用DataHandler对象中的方法
			 * 获取所需的数据信息,DataHandler是一个数据访问接口,它可以读取各种数据和返回数据源的MIME类型
			 */
			gifBodyPart.setDataHandler(new DataHandler(fds));
			// 设置唯一表示符
			gifBodyPart.setContentID("it315_alogo_gif");
			/*
			 * 不必是使用gifBodyPart.setHandler("ContentType","imge/gif");
			 * 来设置MIME类型,上面的setDataHandler方法能够设置好ContentType消息头
			 */
			// 添加到MIMEMESSAGE信息中去
			multipart.addBodyPart(gifBodyPart);
			/*
			 * 将MimeMultipart对象设置为整个邮件的内容,要主要调用saveChange方法进行更新
			 */
			msg.setContent(multipart);
			// 保存最终生成的邮件正文
			msg.saveChanges();
			// 把MimeMessage对象中的内容写入到文件中去
			msg.writeTo(new FileOutputStream("C:\\pictureMessage.eml"));
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值