一、JavaMail
1、什么是JavaMail?
JavaMail,顾名思义,提供给开发者处理 电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便的执行一些常用的邮件传输。我们可以基于JavaMaiil开发出类似于 Microsoft Outlook的应用程序。
2、关于要使用JavaMail的原因?
基于现在WEB开发中对JavaMail的需求,例如:
用户注册后,网站发送一封激活邮件验证;
用户过生日,系统发送生日祝福邮件;
将最新活动和优惠以邮件的形式告知会员等等........
以上的需求都需要通过编程语言实现发送邮件功能,而JavaMail便能满足这一需求。
3、电子邮箱及邮件服务器
什么是电子邮箱?
电子邮箱(E-mail 地址) 需要在邮件服务器上进行申请,确切的说,电子邮箱其实就是用户在邮件服务器上申请的一个账户,用户在邮件服务器上申请了一个账号后,邮件服务器就会为这个账号分配一定的空间,用户从而可以使用这个账号以及空间,发送电子邮件和保存别人发送过来的电子邮件。
什么是邮箱服务器?
服务器指的是一台电脑安装了一个服务器软件,那么这台电脑就可以称为是WEB服务器,那么同样的一台电脑安装了邮件服务器软件,那么这台电脑称为是邮件服务器。
基于互联网的电子邮件功能:
要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器,例如目前网络上提供邮件服务的厂商:新浪、搜狐、网易等等他们都有自己的邮件服务器。
4、邮件收发协议
(1)SMTP协议(发送邮件)
简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 是在Internet传输email的事实标准。(百度百科)
SMTP是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。可以很简单地通过telnet程序来测试一个SMTP服务器。SMTP使用TCP端口25。要为一个给定的域名决定一个SMTP服务器,需要使用MX (Mail eXchange) DNS。(百度百科)
用户脸上邮件服务器后,要想给它发送一封电子邮件,需要遵循一定的通讯规则,SMTP协议就是用于定义这种规则的。因此,通常我们也把处理用户SMTP请求(邮件发送请求)的邮件服务器称之为SMTP服务器。
(2)POP3协议(接收邮件)
POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”。是TCP/IP协议族中的一员,由RFC1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。提供了SSL加密的POP3协议被称为POP3S。(百度百科)
POP 协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是PC机或 MAC。一旦邮件发送到 PC 机或MAC上,邮件服务器上的邮件将会被删除。但目前的POP3邮件服务器大都可以“只下载邮件,服务器端并不删除”,也就是改进的POP3协议。(百度百科)
同样,用户若想从邮件服务器管理的电子邮件中接受一封电子邮件的话,他脸上邮件服务器后,也需要遵循一定的通讯格式,POP3协议用于定义这种通讯格式。
因而,通常我们也把处理用户POP3请求(邮件接受请求)的邮件服务器称之为POP3服务器。
(3)邮件收发过程的介绍:
邮件的发送、接受,在客户端软件中,由SMTP服务器进行发送操作,接受是由POP3服务器进行接收。
1、邮件发送协议-SMTP,默认端口号25
用于把用户邮件从一个服务器转到下一个服务器
2、邮件接收协议-POP3,默认端口号110
用于支持使用客户端远程管理在服务器上的电子邮件
二、邮件发送代码实现
1、环境搭建
(1)创建数据库和表
(2)创建一个springboot工程,创建相应的包,并配置相应的pom.xml依赖
pom.xml
(3)创建User类并配置application.yml
User类:
application.yml
(4)设计注册页面
index.html
(5)Handler :创建接口,接收form 表单数据并进行封装,并经过dao 层 添加到对应的数据库表中
(6)创建一个UUIDUtils 工具类,使用UUID随机生成激活码
(7)创建邮箱参数实体EmailConfig.java和发送邮件工具类MailUtils.java
EmailConfig.java
MailUtils.java
(8)在(4)中的接口接收注册参数并写入数据库后,进行激活邮件的发送
UserServiceimpl.java
完整 业务层代码:
UserService.java
UserServiceImpl.java
(9)UserMapper.java 和 UserMapper.xml
(10)创建用户激活接口:
小结:
发送激活邮件正文,正文内容使用 html 的语法进行修饰,用户邮箱POP3接受到邮件后会自动根据标签及样式进行解析。
激活邮件的原理:
发送邮件给用户,用户根据接收到的邮件的连接点击并跳转到对应的controller请求接口执行code验证码查询到用户,并根据当前激活码的作用对用户执行激活账户、业务等操作!!!
https://github.com/wushaopei/SPRING_BOOT/tree/master/spring-boot-JSP-email