用MIME协议生成一封复杂的邮件(一)

 

用MIME协议生成一封复杂的邮件(一)

MIME协议是对RFC822文档的升级和补充,用MIME协议能生成一封有文字、图片和附件的复杂邮件。首先要导入activation.jar和mail.jarMail.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 !<br>你好<br><img src='cid:1.jpg'><br><img src='cid:2.jpg'>", "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"));

原文件见下一篇笔记。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MIME结构 一、 RFC822协议 RFC822 文档定义了邮件内容的主体结构和各种邮件头字段的详细细节,但是,它没有定义邮件体的格式,RFC822文档定义的邮件体部分通常都只能用于表述一段普通的文本,而无法表达出图片、声音等二进制数据。另外,SMTP服务器在接收邮件内容时,当接收到只有一个“.”字符的单独行时,就会认为邮件内容已经结束,如果一封邮件正文中正好有内容仅为一个“.”字符的单独行,SMTP服务器就会丢弃掉该行后面的内容,从而导致信息丢失。 由于 Internet的迅猛发展,人们已不满足于电子邮件仅仅是用来交换文本信息,而希望使用电子邮件来交换更为丰富多彩的多媒体信息,例如,在邮件中嵌入图片、声音、动画和附件。但是,由于图片和声音等内容是非ASCII码的二进制数据,而RFC822邮件格式只适合用来表达纯文本的邮件内容,所以,要使用 RFC822邮件格式发送这些非ASCII码的二进制数据时,必须先采用某种编码方式将它们“编码”成可打印的ASCII字符后再作为RFC822邮件格式的内容。邮件阅读程序在读取到这种经过编码处理的邮件后,再按照相应的解码方式解码出原始的二进制数据,这样就可以借助RFC822邮件格式来传递多媒体数据了。这种做法需要解决以下两个技术问题: (1) 邮件阅读程序如何知道邮件中嵌入的原始二进制数据所采用的编码方式; (2) 邮件阅读程序如何知道每个嵌入的图像或其他资源在整个邮件内容中的起止位置。 针对这个问题,人们后来专门为此定义了MIME(Multipurpose Internet Mail Extension,多用途Internet邮件扩展)协议。 .....
MIME协议(中文版)》,DOC格式,大小89KB。 内容预览: MIME结构 一、 RFC822协议 RFC822 文档定义了邮件内容的主体结构和各种邮件头字段的详细细节,但是,它没有定义邮件体的格式,RFC822文档定义的邮件体部分通常都只能用于表述一段普通的文本,而无法表达出图片、声音等二进制数据。另外,SMTP服务器在接收邮件内容时,当接收到只有一个“.”字符的单独行时,就会认为邮件内容已经结束,如果一封邮件正文中正好有内容仅为一个“.”字符的单独行,SMTP服务器就会丢弃掉该行后面的内容,从而导致信息丢失。 由于 Internet的迅猛发展,人们已不满足于电子邮件仅仅是用来交换文本信息,而希望使用电子邮件来交换更为丰富多彩的多媒体信息,例如,在邮件中嵌入图片、声音、动画和附件。但是,由于图片和声音等内容是非ASCII码的二进制数据,而RFC822邮件格式只适合用来表达纯文本的邮件内容,所以,要使用 RFC822邮件格式发送这些非ASCII码的二进制数据时,必须先采用某种编码方式将它们“编码”成可打印的ASCII字符后再作为RFC822邮件格式的内容。邮件阅读程序在读取到这种经过编码处理的邮件后,再按照相应的解码方式解码出原始的二进制数据,这样就可以借助RFC822邮件格式来传递多媒体数据了。这种做法需要解决以下两个技术问题: (1) 邮件阅读程序如何知道邮件中嵌入的原始二进制数据所采用的编码方式; (2) 邮件阅读程序如何知道每个嵌入的图像或其他资源在整个邮件内容中的起止位置。 针对这个问题,人们后来专门为此定义了MIME(Multipurpose Internet Mail Extension,多用途Internet邮件扩展)协议。 二、 RFC822结构
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值