常用场景:1.注册完,账户激活功能 2.商城广告邮件 3.节日祝福 4.系统对用户功能通知,可以通过邮件。
电子邮件服务器主要功能:
1.接收用户投递的邮件。
2.将用户投递进来的邮件转发给目标邮件服务器。
3.接收其他邮件服务器转发来的邮件,并把邮件存储到其管理的用户邮中。
4.为前来读取邮件的用户提供服务。(服务器为被动的)
邮件服务器按通信协议可以或分为两种类型:SMTP服务器 POP3/IMAP 服务器
SMTP服务器主要用来 发送邮件和接收邮件 POP3是用户向服务器请求(询问)邮件时使用。
为用户取邮件(POP3)和替用户收邮件(SMTP)是两回事。取指的是收到邮件后,用户前来询问,然后服务器为用户取邮件。替用户收邮件指没有用户的参与过程,当有其它服务器向本服务器发送邮件时,本服务器代替用户接收邮件。
电子邮箱
每个电子服务器上可以开很多电子邮箱。邮件服务器把接受到的邮件保存到为某个账户所分配的邮箱空间中,用户通过其申请的用户名和密码登录到邮件服务器上查收该地址已收到的电子邮件。
准备实验环境:
开设免费邮箱帐号,获取每个帐号对应服务器的smtp和pop3服务器的名称。
在outlook配置账户,使用outlook发送和接收邮件。
IMAP协议:消息访问协议,它是对POP3协议的一种扩展,定义了邮件客户端软件与IMAP服务器的通讯规则。
服务器之间的邮件发送,不需要登录。
邮件端口25JavaMail就是Sun公司封装好的关于邮件的API
JavaMail API按其功能可分为三类
1.创建和解析邮件内容的API(Message类)
2.发送邮件API(Transport类)
3.接收邮件的API(Store类)
Session类用户定义整个应用程序所需的环境信息,以及收集客户端与服务器建立网络的会话信息,如邮件服务器的主机名,端口号,采用的协议。
mail.jar 包含了dns.jar gimap.jar imap.jar mailapi.jar pop3.jar smtp.jar这是为了让功能细化些,提高程序性能。
若是程序使用JDK6以前的,这里还需要导入jaf 中的jar,jaf被javamail使用,故我们也应该在程序中导入此jar。但若是我们的JDK版本大于或等于6,则不必导入,因为环境已经帮我们配置好了。
一个简易的邮件发送的例子:
public static void main(String[] args) throws Exception {
Properties props=new Properties();
props.setProperty("mail.smtp.auth", "true");//表明会调式
props.setProperty("mail.transport.protocol", "smtp");
Session session=Session.getDefaultInstance(props);
session.setDebug(true);
//1
Message msg=new MimeMessage(session);
msg.setText("hello");
Address address=new InternetAddress("wanhao6@aliyun.com");
msg.setFrom(address);
Transport transport=session.getTransport();
transport.connect("smtp.aliyun.com", 25,"username", "password");
//transport.send(msg,new Address[]{new InternetAddress("2235623837@qq.com")}); 这里为对象的静态方法
transport.sendMessage(msg, new Address[]{new InternetAddress("2235623837@qq.com")});
transport.close();
}
属性设置十分灵活
收件人既可以在message中指定,也可以在发送时指定。
若是同时向多个人发送,最好别写收件人,临时发送指定。