1. javax.mail
1.1. 简介
JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。 JavaMail是可选包。
1.2. 相关协议
-
SMTP(递送邮件机制)
简单邮件传输协议
SMTP服务器将邮件转发到接收者的SMTP服务器,直至最后被接收者通过POP或者IMAP协议获取。
-
POP(获取邮件机制)
邮局协议
-
IMAP(多目录共享)
接收信息的高级协议
接收新信息,将这些信息递送给用户,维护每个用户的多个目录。
-
MIME
邮件扩展内容格式:信息格式、附件格式等等
-
NNTP
第三方新闻组协议
1.3. 所需要的包
-
mail.jar
将下载的包添加到项目即可。
1.4. 核心类
javamail.jar文件的一些核心类:Session、Message、Address、Authenticator、Transport、Store、Folder。
-
Session(邮件会话类)
进行收、发邮件的工作都是基于这个会话的。
Session利用java.util.Properties对象 进行邮件服务器、用户名、密码等信息的配置。
Properties props = new Properties(); Session session = Session.getDefaultInstance(props, null);
或者
Properties props = new Properties(); Session session = Session.getInstance(props, null);
从上面的两个例子中不难发现,第二个参数都是null,这是因为在上面的例子中并没有使用到邮件授权(Authenticator)
-
Message
该类是对邮件的抽象。
可以设置邮件的相关内容
使用javax.mail.internet.MimeMessage这个子类,该类是使用MIME类型、MIME信息头的邮箱信息。
信息头只能使用US-ASCII字符
Message message = new MimeMessage(session);
message.setContent(“Hello”, “text/plain”);//非文本信息内容message.setSubject(“First”);//纯文本信息内容
message.setText(“Hello”);//设置邮件内容
message.setSentDate(Date);//设置邮件发送日期 -
Address
建立了Session和Message对象后,使用邮件地址Address抽象类。该类是对邮件地址的抽象。
使用javax.mail.internet.InternetAddress这个子类。通过传入邮件地址的字符串, 便可实例一个邮件地址对象。
Address address = new InternetAddress("123456@qq.com"); //邮件地址 Address address = new InternetAddress("123456@qq.com", "Hao"); //带名字的邮件地址 message.setFrom(address);//设置发信人 message.setReplyTo(address);//同上 message.addFrom(Address[] address);//添加多个发信人 message.addRecipient(type, address)//设置收信人 // type的类型有很多 // Message.Recip