MIME协议发送邮件

    技术2022-05-20  29

    RFC822文档规定发送邮件的格式:

     ehlo  主机名

     auth login 登录命令

    mail from:发件者的邮件

     rcpt to: 接受者邮件

    data

    from:发件者的邮件

     to:接受者邮件

     subject:主题

    //空行

    正文

       

    相关代码:

     

    简单邮件的发送:

    //创建邮件属性条件

     Properties props = new Properties();

     //创建session

    Session session = Session.getInstance(props);

     //创建邮件

    MimeMessage message = new MimeMessage(session);

    //设置邮件的发件人地址 相当于from:<>操作  

     message.setFrom(new InternetAddress("zb0128@fq-201001291038.com"));

    //设置收件人地址  相当于rcpt to:<>操作

     message.setRecipient(Message.RecipientType.TO, new InternetAddress("zb1989@fq-201001291038.com"));

    //设置邮件的主题   相当于subject:操作

     message.setSubject("你好 张宝1989");

           

    //创建邮件内容对象 

     MimeBodyPart part = new MimeBodyPart();

     part.setContent("你好 我是张宝0128 这是我给你发的邮件", "text/html;charset=gb2312");     

     //创建邮件的描述对象 

     MimeMultipart mm = new MimeMultipart();

    //想邮件描述中添加邮件体

     mm.addBodyPart(part);

    //向邮件中添加邮件内容

    message.setContent(mm);

    //保存邮件

     message.saveChanges();

    //写邮件

    message.writeTo(new FileOutputStream("E://1.eml"));

     

     

     

    发送一个带有图片的邮件:

    //创建邮件 一步完成

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

    //设置邮件的发件人地址

    message.setFrom(new InternetAddress("zb0128@fq-201001291038.com"));

    //设置收件人的地址

    message.setRecipient(Message.RecipientType.TO, new InternetAddress("zb1989@fq-201001291038.com"));

    //设置邮件的主题

    message.setSubject("你好 我给你发个图片");

    //设置邮件的内容

    MimeBodyPart body=new MimeBodyPart();

    body.setContent("你好 看看这张美女图片好看吧<br/><br/><a href='http://www.baidu.com'><img src='cid:xx.jpg'></a>", "text/html;charset=gb2312");

    //想邮件体中添加图片文件

    MimeBodyPart image=new MimeBodyPart();

    image.setDataHandler(new DataHandler(new FileDataSource("src//fileaccessor//f.jpg")));

    //给邮件文件设置id

    image.setContentID("xx.jpg");

    //设置描述文件

    MimeMultipart mm=new MimeMultipart();

    //向邮件中添加邮件体

    mm.addBodyPart(body);

    //向邮件中添加图片

    mm.addBodyPart(image);

    //设置邮件中文件的关联关系

    mm.setSubType("related");

    //将描述对象添加到邮件中

    message.setContent(mm);

    //保存邮件

    message.saveChanges();

    //将邮件写在E://2.eml

    message.writeTo(new FileOutputStream("E://2.eml"));

     

     

    发送带有附件的邮件:

    //创建邮件

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

    //设置发件人地址

    message.setFrom(new InternetAddress("zb0128@fq-201001291038.com"));

    //设置收件人的地址

    message.setRecipient(Message.RecipientType.TO,new InternetAddress("zb1989@fq-201001291038.com"));

    //设置邮件的主题

    message.setSubject("这首歌很好听");

    //设置邮件的内容

    MimeBodyPart body=new MimeBodyPart();

    //设置邮件的内容

    body.setContent("给你发来一首歌 你听听 很不错","text/html;charset=gb2312");

    //设置附件的内容

    MimeBodyPart music=new MimeBodyPart();

    DataHandler dh=new DataHandler(new FileDataSource("src//fileaccessor//大笑江湖.mp3"));

    music.setDataHandler(dh);

    //解决附件 中文乱码问题

    //设置附件的名字

    music.setFileName(MimeUtility.encodeText(dh.getName()));

    //创建描述

    MimeMultipart mm=new MimeMultipart();

    mm.addBodyPart(body);

    mm.addBodyPart(music);

    mm.setSubType("mixed");

    message.setContent(mm);

    //保存邮件

    message.saveChanges();

    //将邮件写在E://3.eml

    message.writeTo(new FileOutputStream("E://3.eml"));

     

    发送两张图片的邮件:

    在一张图片的基础上,只需要稍加改动就可以;

    MimeBodyPart text=new MimeBodyPart();

    text.setContent("你好 这是我给你发的两张图片<br/><img src='cid:xx.jpg'><br/><img src='cid:yy.jpg'>","text/html;charset=gb2312");

    //第一张图片

          MimeBodyPart img1=new MimeBodyPart();

    img1.setDataHandler(new DataHandler(new FileDataSource("src//fileaccessor//f.jpg")));

          img1.setContentID("xx.jpg");

          //第二章图片

         

          MimeBodyPart img2=new MimeBodyPart();

          img2.setDataHandler(new DataHandler(new FileDataSource("src//fileaccessor//f.jpg")));

          img2.setContentID("yy.jpg");

          //描述

          MimeMultipart mm=new MimeMultipart();

          mm.addBodyPart(text);

          mm.addBodyPart(img1);

          mm.addBodyPart(img2);

    mm.setSubType("related");

     

     

    发送一个及带有图片有带有附件的邮件:

    //首先创建邮件

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

          //设置属性

    message.setFrom(new InternetAddress("zb0128@fq-201001291038.com"));

    message.setRecipient(Message.RecipientType.TO,new InternetAddress("zb1989@fq-201001291038.com"));

          message.setSubject("这是世界上最复杂的邮件");

          //邮件的内容

          MimeBodyPart text=new MimeBodyPart();

    text.setContent("你好 我给你发了一张图片 和一首很好听的歌<br/><img src='cid:xx.jpg'>", "text/html;charset=gb2312");

          //设置图片

          MimeBodyPart img=new MimeBodyPart();

    img.setDataHandler(new DataHandler(new FileDataSource("src/fileaccessor/f.jpg")));

          img.setContentID("xx.jpg");

          MimeMultipart mm=new MimeMultipart();

          mm.addBodyPart(text);

          mm.addBodyPart(img);

          mm.setSubType("related");

          //在设置一个BodyPart来封装上面的正文和图片

          MimeBodyPart part=new MimeBodyPart();

          part.setContent(mm);

          //设置附件

          MimeBodyPart music=new MimeBodyPart();

    DataHandler dh=new DataHandler(new FileDataSource("src/fileaccessor/大笑江湖.mp3"));

          music.setDataHandler(dh);

          String fileName=dh.getName();

          //解决中文乱码问题

                                                       music.setFileName(MimeUtility.encodeText(fileName));

         

          //创建描述

          MimeMultipart m=new MimeMultipart();

          m.addBodyPart(part);

          m.addBodyPart(music);

          //设置附件的关系

          m.setSubType("mixed");

          //添加到邮件中去

          message.setContent(m);

          message.saveChanges();

    message.writeTo(new FileOutputStream("E:/5.eml"));


    最新回复(0)