用MIME协议生成一封复杂的邮件(一)
MIME协议是对RFC822文档的升级和补充,用MIME协议能生成一封有文字、图片和附件的复杂邮件。首先要导入activation.jar和mail.jar。Mail.jar的下载地址是:
http://www.oracle.com/technetwork/java/index-138643.html,activation.jar的下载地址是:http://www.oracle.com/technetwork/java/jaf102-139581.html
分析生成过程:
// 1、创建邮件MimeMessage的对象
<1>第一种方法:
Properties props=new Properties();
Session session=Session.getInstance(props);
MimeMessage mm=new MimeMessage(session);
<2>第二种方法:
MimeMessage mm2=new MimeMessage(Session.getInstance(System.getProperties()));
<3>第三种方法:
MimeMessage mm3=new MimeMessage(Session.getInstance(newProperties()));
// 2、设置MimeMessage的属性
//发件人的邮件地址
mm.setFrom(new InternetAddress("guoqianfang@163.om"));
//发件人的邮件地址
mm.setRecipients(Message.RecipientType.TO, "hongmeikai@sina.com");
//邮件的主题
mm.setSubject("下午好");
// 3、写邮件的正文,用到的是MimeBodyPart类
//写文字
MimeBodyPart mp=new MimeBodyPart();
mp.setContent("hongmeikai nihao !
你好
", "text/html;charset=gb2312");
//写第一个图片
MimeBodyPart mp2=new MimeBodyPart();
mp2.setDataHandler(new DataHandler(new FileDataSource("src//_009.jpg")));
mp2.setContentID("1.jpg");
//写第二个图片
MimeBodyPart mp3=new MimeBodyPart();
mp3.setDataHandler(new DataHandler(new FileDataSource("src//_2.jpg"))); mp3.setContentID("2.jpg");
// 4、创建关系,把图片的文字联系起来,用到的类是MimeMultiPart
MimeMultipart mmp=new MimeMultipart();
mmp.addBodyPart(mp);
mmp.addBodyPart(mp2);
mmp.addBodyPart(mp3);
mmp.setSubType("related");//related是表示关联关系
// 5、再把上面的关系放到MimeBodyPart中
MimeBodyPart mp4=new MimeBodyPart();
mp4.setContent(mmp);
// 6、设置附件,用到的是MimeBodyPart类
MimeBodyPart mp5=new MimeBodyPart();
//消除歌名是中文时的乱码问题
DataHandler dh=new DataHandler(new FileDataSource("src//改变自己.mp3"));
mp5.setDataHandler(dh);
String filename=dh.getName();
mp5.setFileName(MimeUtility.encodeText(filename));
// 7、再创建关系
MimeMultipart mmp2=new MimeMultipart();
mmp2.addBodyPart(mp4);
mmp2.addBodyPart(mp5);
mmp2.setSubType("mixed");
// 8、把连接好的加载到邮件(MimeMessage)中
mm.setContent(mmp2);
mm.saveChanges();
// 9、在D盘生成一个邮件
mm.writeTo(new FileOutputStream("D://1.eml"));
原文件见下一篇笔记。