使用SpringBoot开发邮件系统只需三步
发布时间:2023-03-09|点击:1次提到发送邮件相信大家都不陌生,那么作为一个程序猿,除了日常的工作要使用邮件之外,可能还有一个专属于程序猿的使用邮件场景-邮件系统开发,我们不仅仅使用邮件,还开发邮件。
大家应该经常会有这种经历,当我们在一些平台使用邮箱注册账号或者在绑定邮箱的的时候,通常都会有一个邮箱验证激活的步骤。这个验证邮箱的步骤,就是在你注册的时候,平台会给你的邮箱发送一封验证邮件。
今天这篇文章就会手把手带着同学们如何实现一个自己的邮件发送系统。以后再也不用担心女朋友不接你电话了...
为什么大家都爱使用邮件?
因为便宜啊!!!
因为便宜啊!!!
因为便宜啊!!!
重要的事情说三遍!!!
电子邮件的产生
世界上的第一封电子邮件是在1969年10月由计算机科学家LeonardK.教授发给他的同事的一条简短消息。据说是"LO",意思是:"你好!"。java在诞生之初就支持邮件发送,但是比较麻烦,已经没有人在用了;后期Spring框架在Java发送邮件的基础之上又进行了封装,才使得邮件的发送开始变的的简单,而今天咱么用的都不是以上两种方式,而是使用·完成邮件发送;因为使用SpringBoot比以上两种方式还要简单。
邮件发送三步走
在开始实现发送邮件的功能之前,我们先来说一下发送邮件的原理,遵循着宋丹丹老师给我们总结的大象装冰箱的经典三步法,我们的邮件发送也可以总结成三个步骤。
第一步:(把冰箱门打开)
发件人将邮件发送到邮件发送服务器(发送方的邮件服务器,如果发送方是qq邮箱,邮件发送服务器就是qq邮箱服务器;如果发送方是163邮箱,邮件发送服务器就是163邮箱服务器)
第二步:(把大象装进去)
邮件发送服务器会将邮件发送到邮件接收服务器(同理,如果收件方是qq邮箱,邮件接收服务器就是qq邮箱服务器;如果接收方是163邮箱,邮件接收服务器就是163邮箱服务器)
第三步:(把冰箱门盖上)
邮件接收服务器会将接收到的邮件发送给收件人
邮件传输协议作为一个勤学好问的程序猿,我们当然也要了解下邮件发送的协议,这个是关乎邮件发送的最根本的内容。
在上述邮件发送的过程中,邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行邮件传递,是要遵守一定的规则,这个规则就是邮件传输协议。常见的电子邮件协议SMTP、POP3、IMAP,它们都隶属于TCP/IP协议族,默认状态下,分别通过TCP端口25、110和143建立连接。下面分别对其进行简单介绍。
SMTP协议
SMTP的全称是“Simple Mail Transfer Protocol”,即"简单邮件传输协议"。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式
POP协议
POP全称是 Post Office Protocol,邮局协议。它定义了邮件客户端软件和POP3邮件服务器的通信规则。
IMAP
IMAP全称是 Internet Message Access Protocol,Internet消息访问协议,它是对POP3协议的一种扩展,也是定义了邮件客户端软件和IMAP邮件服务器的通信规则
准备工作
这次的案例咱么使用163邮箱来给qq邮箱发送邮件,所有要准备好连个邮箱xxx@163.com、xxx@qq.com,这两个邮箱一个是发送方,一个是接受方。
配置邮箱授权码我们在使用应用程序发送邮件的是时候,其实就是想要当于是用客户端发送邮件,所以我们要在发送人的邮箱设置开启客户端操作,默认是关闭,这个只需要在发送方的邮箱了设置下就可以了。
在这个过程中会提示你发送短信,按照给短信内容使用自己绑定的手机号发送即可,然后可以自己输入授权码,自己设置的授权码要记住,以后发送邮件都要用到。
发送邮件好了,到这里该准备的都准备好了,接下来就开干了。
首先,使用SpringInitializr初始化器,创建最基础的SpringBoot工程让后添加发送邮件的依赖项。
接下来就要配置邮箱相关的属性配置,application.properties中添加邮件相关配置。
# 163服务器
spring.mail.host=http://smtp.163.com
#发件人邮箱
spring.mail.username=wyliboyu@163.com
#我们自己设置的授权密码
spring.mail.password=ming438434
#默认端口是25
spring.mail.port=25
#使用smtp协议
spring.mail.protocol=smtp
spring.mail.default-encoding=UTF-8
最后就是最简单的发送邮的代码
/**
*发送简单邮件
*
*@throws Exception
*/
@Test
publicvoidsendMailTest()throwsException{
//简单邮件
SimpleMailMessage simpleMailMessage = newSimpleMailMessage();
// 发件人昵称
Stringnick = MimeUtility.encodeText("课工场");
// 发件人邮箱 simpleMailMessage.setFrom(String.valueOf(newInternetAddress(nick+ "<"+ "wyliboyu@163.com"+ ">")));
// 收件人
simpleMailMessage.setTo("459829618@qq.com");
simpleMailMessage.setSubject("这是一封秘密邮件!!!");
//4.设置邮件内容
simpleMailMessage.setText("");
mailSender.send(simpleMailMessage);
System.out.println("邮件发送成功....");
}
这里有一个小问题,如果你在你的收件箱看不到邮件的话,可以去垃圾邮件箱看看,因为系统很可能是把它当作了垃圾邮件。
没想到这么简单就搞定了一个了邮件发送的系统,是不是很简单呢,同时大家也应该了解到SpringBoot的强大了吧