javamail的使用

●MIME协议
1.Multipurpose Internet Mail Extensions 的缩写,多用途网际邮件扩充协议 ,
  说明了如何安排消息格式使消息在不同的邮件系统内进行交换。
2.整个message为一个Mime邮件,包含邮件头和邮件体,邮件头包含发送者,接收者,邮件标题,
  抄送者信息等
3.邮件体包含许多部分,这些部分的内容是多种多样的,所以会以带ID的-------------分割
  然后写明此部分消息的content-type:text/html或者content-type:image/jpeg等MIME类型
4.邮件体的各个部分总体而言有三类,正文类型,引用数据类型和附件类型。正文与附件之间的
  关系为fixed,正文和引用数据之间的关系为related。设置了关系后可以清晰的知道哪些内容
  是正文,哪些内容是附件,哪些内容是引用数据。还有一个作用就是在正文引用引用数据的时候
  可以在正文使用html标签,如<img src="cid:myimg" /> 则在引用数据时指定content-id:myimg
  即可。

-------------------=DFGIONGHOAYURE
content-type:text/html   BodyPart 1
djafldas
<img src="cid:myimg" />
kjflasdj正文


-------------------=DFGIONGHOAYURE
content-type:image/jpeg   BodyPart
content-id:myimg
……%&*……*(&%……图片


-------------------=DFGIONGHOAYURE
content-type:application/..................
a.mp3 附件    BodyPart 3
 

-------------------=DFGIONGHOAYURE

●javamail
1.导包
  jaf-1.1.1中     activation.jar
  javamail-1.4.1  mail.jar
2.主要类
  MimeMessage类代表一封Mime邮件
  构造方法MimeMessage(Session session)
  Properties props = new Properties();
  props.setProperty("mail.transport.protocol", "smtp");
  props.setProperty("mail.host", "localhost");
  Session session = Session.getInstance(props);
  a.设置往哪发
    addRecipients(Message.RecipientType type, java.lang.String addresses)
  b.设置标题
    setSubject(java.lang.String subject, java.lang.String charset)
  c.设置邮件体
    setContent(Multipart mp)
  MimeMultipart类代表邮件体
  a.设置邮件体中的各部分
    addBodyPart(BodyPart part)
  b.设置邮件体中各部分的类型
    setSubType("related");  "mixed"
  MimeBodypart类代表邮件体中各部分
  a.设置内容
  setContent(java.lang.Object o, java.lang.String type)
  b.设置内容为一个邮件体
  setContent(Multipart mp)
  c.设置内容为别的格式
  setDataHandler(new DataHandler(new FileDataSource(new File(path))))
  Transport类
  建立连接 发送邮件
  Transport transport = session.getTransport();
  transport.connect("lhg", "888888");
  transport.send(message);
  transport.close();

●例子
package cn.itcast.mail;

import java.io.File;
import java.net.URLDecoder;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

public class JavaMail {

 /**
  * 发送一封电子邮件
  */
 public static void main(String[] args) throws Exception {
  
  Properties props = new Properties();
  props.setProperty("mail.transport.protocol", "smtp");
  props.setProperty("mail.host", "localhost");
  
  Session session = Session.getInstance(props); // Connection
   
  
  //MimeMessage message = makeMessage(session);
  
//  MimeMessage message = makeImageMessage(session);
  
 // MimeMessage message = makeAttachMessage(session);
  
  MimeMessage message = makeImageAttachMessage(session);
  
  // 将邮件写入硬盘
 // message.writeTo(new FileOutputStream("d:\\1.eml"));
  
  // 发送邮件
  Transport transport = session.getTransport();
  
  transport.connect("lhg", "888888");
  
  transport.send(message);
  
  transport.close();
 }


 // 制作一封简单邮件
 private static MimeMessage makeMessage(Session session)
   throws MessagingException, AddressException {
  // 1. 创建一个 message对象 表示一封 mime 邮件
  MimeMessage message = new MimeMessage(session);
  
  // 2. 设置邮件头
  message.setFrom(new InternetAddress("lhg@itcast.cn"));
  message.setSubject("this is a javamail!");
  message.setRecipient(Message.RecipientType.TO, new  InternetAddress("xiaohong@itcast.cn"));
  
  // 3. 设置邮件体
  // 创建  multipart
  MimeMultipart multipart = new MimeMultipart();
  // 创建 bodypart
  MimeBodyPart bodyPart = new MimeBodyPart();
  // 添加内容
  bodyPart.setContent("hello!!!", "text/html");
  
  // 将 bodypart 加入 multipart
  multipart.addBodyPart(bodyPart);
  
  // 添加邮件体
  message.setContent(multipart);
  return message;
 }
 
 // 制作一封带图片的邮件
 private static MimeMessage makeImageMessage(Session session) throws Exception {
  MimeMessage message = new MimeMessage(session);
  
  // 设置邮件头
  message.setFrom(new InternetAddress("xiaohong@itcast.cn"));
  message.setSubject("this is a javamail!");
  message.setRecipient(Message.RecipientType.TO, new  InternetAddress("lhg@itcast.cn"));
  
  // 设置邮件体  两部分  正文 图片
  // 创建 multipart
  MimeMultipart multipart = new MimeMultipart();
  
  // 创建正文
  MimeBodyPart text = new MimeBodyPart();
  text.setContent("this is my photo<br><img src='cid:myimg' width='400' />", "text/html");
  
  // 创建图片
  MimeBodyPart image = new MimeBodyPart();
  // 将 普通格式的数据转为 mime 格式  需要 jaf 技术
  // 类加载获得文件绝对路径
  String path = JavaMail.class.getClassLoader().getResource("b.jpg").getPath();
  File file = new File(path);
  DataHandler dh = new DataHandler(new FileDataSource(file));
  image.setDataHandler(dh);
  image.setContentID("myimg");
  
  // 将两个 bodypart 加入 multipart
  multipart.addBodyPart(text);
  multipart.addBodyPart(image);
  
  // 描述关系
  multipart.setSubType("related");
  
  // 设置邮件体
  message.setContent(multipart);
  
  return message;
 }
 
 // 制作一封带附件的邮件
 private static MimeMessage makeAttachMessage(Session session) throws Exception {
  MimeMessage message = new MimeMessage(session);
  
  // 设置邮件头
  message.setFrom(new InternetAddress("xiaohong@itcast.cn"));
  message.setSubject("this is a javamail!");
  message.setRecipient(Message.RecipientType.TO, new  InternetAddress("lhg@itcast.cn"));
  
  // 创建正文
  MimeBodyPart text = new MimeBodyPart();
  text.setContent("this is my song!!!", "text/html");
  
  // 创建附件
  MimeBodyPart attach = new MimeBodyPart();
  String path = JavaMail.class.getClassLoader().getResource("a.mp3").getPath();
  attach.setDataHandler(new DataHandler(new FileDataSource(path)));
  
  // 添加到 multipart 描述关系
  MimeMultipart multipart = new MimeMultipart();
  multipart.addBodyPart(text);
  multipart.addBodyPart(attach);
  multipart.setSubType("mixed");
  
  // 设置邮件体
  message.setContent(multipart);
  
  return message;
 }
 
 // 即带图片又带附件的
 private static MimeMessage makeImageAttachMessage(Session session)throws Exception {
  MimeMessage message = new MimeMessage(session);
  
  // 设置邮件头
  message.setFrom(new InternetAddress("lhg@itcast.cn"));
  message.setSubject("这是一封电子邮件");
  message.setRecipient(Message.RecipientType.TO, new  InternetAddress("zhaonan@itcast.cn"));
  
  // 创建正文
  MimeBodyPart text = new MimeBodyPart();
  text.setContent("这是我的一张图片<br><img src='cid:mygirl' width='400' />", "text/html;charset=utf-8");
  
  URLDecoder decoder = new URLDecoder();
  // 创建图片
  MimeBodyPart image = new MimeBodyPart();
  String path = JavaMail.class.getClassLoader().getResource("美女.jpg").getPath();
  image.setDataHandler(new DataHandler(new FileDataSource(decoder.decode(path, "utf-8"))));
  image.setContentID("mygirl");
  
  // 创建附件
  MimeBodyPart attach = new MimeBodyPart();
  path = JavaMail.class.getClassLoader().getResource("一首歌.mp3").getPath();
  attach.setDataHandler(new DataHandler(new FileDataSource(decoder.decode(path, "utf-8"))));
  String filename = MimeUtility.encodeText("一首歌.mp3");
  attach.setFileName(filename);
  
  // 组合成邮件体
  MimeMultipart multipart1 = new MimeMultipart();
  multipart1.addBodyPart(text);
  multipart1.addBodyPart(image);
  multipart1.setSubType("related");
  
  // 将 multipart1 封装到一个 BodyPart
  MimeBodyPart textimage = new MimeBodyPart();
  textimage.setContent(multipart1);
  
  MimeMultipart multipart2 = new MimeMultipart();
  multipart2.addBodyPart(textimage);
  multipart2.addBodyPart(attach);
  multipart2.setSubType("mixed");
  
  // 设置邮件体
  message.setContent(multipart2);
  
  return message;
 }

}

 

 

 

 

 

 


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值