Springboot下实现邮件发送功能

Springboot下实现邮件发送功能

一、几种邮件协议简介

1.SMTP协议

SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器

2.POP3协议

POP3(Post Office Protocol 3,邮局协议的第3个版本)规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件。POP3服务器则是遵循POP3协议的接收邮件服务器,主要用来接收电子邮件。

3.IMAP协议

IMAP(Internet Mail Access Protocol,交互式邮件存取协议)是跟POP3类似邮件访问标准协议之一。不同的是,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。

二、基于SMTP协议发送邮件

1.获取QQ邮箱授权码

获取QQ邮箱授权码步骤1

获取QQ邮箱步骤2

获取QQ邮箱步骤3

2.代码实现

(1)创建一个Springboot工程

创建Spring Boot工程

创建完成后,项目依赖如下:

    <dependency>
    	<groupId>org.springframework.boot</groupId>
   	 	<artifactId>spring-boot-starter-web</artifactId>
    	<version>2.2.1.RELEASE</version>
    </dependency>

 	<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>

(2)编写配置文件

项目创建成功后,接下来编辑applicaton.properties配置文件:

spring.mail.host=smtp.qq.com
spring.mail.port=587
spring.mail.username=159xxxx63@qq.com
spring.mail.password=这里填刚才获取的QQ邮箱授权码
spring.mail.default-encoding=UTF-8
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.debug=true

配置含义如下:

  • 配置 SMTP 服务器地址

  • SMTP 服务器的端口

  • 配置邮箱用户名

  • 配置密码,注意,不是真正的密码,而是刚刚申请到的授权码

  • 默认的邮件编码

  • 配置 SSL 加密工厂

  • 表示开启 DEBUG 模式,这样,邮件发送过程的日志会在控制台打印出来,方便排查错误

如果不知道 smtp 服务器的端口或者地址的的话,可以参考腾讯的邮箱文档

(3)与发送邮件相关的几个类

在编写代码前,先来了解两个类:JavaMailSender接口类 、SimpleMailMessage类。

JavaMailSender接口类定义了邮件发送的send方法,以及创建MimeMessage的方法,但这个接口类并不需要我们自己实现,实现类JavaMailSenderImpl由SpringBoot根据配置文件自动装填各个属性。
mark

SimpleMailMessage类是一个邮件消息实体类,包含的成员变量如下:

mark

(4)发送简单邮件

	@Autowired
    JavaMailSender mailSender;

	@Test
    void Test1() {
   
        SimpleMailMessage msg = new SimpleMailMessage();
        msg.setSubject("测试邮件主题"); 
        msg.setSentDate(new Date());
        msg
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值