浅谈邮件的发送和接受(二)

创建邮件—— MIME协议 

MIME协议是对RFC822文档的升级和补充,它描述了如何生成一封复杂邮件。通常我们把MIME协议描述的邮件称之为MIME邮件,MIME协议描述的数据称之为MIME消息。

对于一封复杂邮件,如果包含了多个不同的数据,MIME协议规定了要使用分隔线对多段数据进行分隔,并使用Content-Type头字段对数据的类型、以及多个数据之间的关系进行描述。(查看outlook邮件源文件)

下面这个“世界上最复杂的邮件原理图”能比较清晰的解释MIME协议

    下面用具体的实例来演示用MIME协议来发送一个带有两个图片和一首歌的世界上最复杂的邮件.首先在一个项目中建立一个Mail1的类,再把aa.jpg和江若琳 唯有爱.mp3放在src的路径下,具体事例如下:

public class Mail1 {

public static void main(String[] args) throws AddressException, MessagingException, FileNotFoundException, IOException {

//创建邮件、

MimeMessage message=new MimeMessage(Session.getInstance(new Properties()));

    //创建邮件属性

message.setFrom(new InternetAddress("1150689774@qq.com"));

message.setRecipient(Message.RecipientType.TO,new InternetAddress("1325691132@qq.com"));

message.setSubject("你好吗  同志们");

//正文

MimeBodyPart text=new MimeBodyPart();

text.setContent("XXXXXX<br/><img src='cid:xx.jpg'></br><img src='cid:yy.jpg'>""text/html");

//图片1

MimeBodyPart img1=new MimeBodyPart();

DataHandler dh=new DataHandler(new FileDataSource("src//aa.jpg"));

img1.setDataHandler(dh);

img1.setContentID("xx.jpg");

//图片2

MimeBodyPart img2=new MimeBodyPart();

DataHandler dh2=new DataHandler(new FileDataSource("src//aa.jpg"));

img2.setDataHandler(dh2);

img2.setContentID("yy.jpg");

//设置附件

MimeBodyPart attch=new MimeBodyPart();

DataHandler dh3=new DataHandler(new FileDataSource("src//江若琳 - 唯有爱.mp3"));

attch.setDataHandler(dh3);

String filename=dh3.getName();

attch.setFileName(MimeUtility.encodeText(filename));

        //描述关系

//图片与正文的描述关系

   MimeMultipart mm=new MimeMultipart();

   mm.addBodyPart(text);

   mm.addBodyPart(img1);

   mm.addBodyPart(img2);

   mm.setSubType("related");

   //图片与正文的bodypart关系、、

  MimeBodyPart part=new MimeBodyPart();

  part.setContent(mm);

   //附件与以上的bodypart的关系、

   MimeMultipart m=new MimeMultipart();

   m.addBodyPart(part);

   m.addBodyPart(attch);

   m.setSubType("mixed");

   //把Mime消息设置在message中

   message.setContent(m);

   message.saveChanges();

   message.writeTo(new FileOutputStream("G://6.eml"));

}

}

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值