邮件传输协议
-
SMTP协议:全称为 Simple Mail Transfer Protocol,简单邮件传输协议。它定义了邮件客户端软件和SMTP邮件服务器之间,以及两台SMTP邮件服务器之间的通信规则
-
POP3协议:全称为 Post Office Protocol,邮局协议。它定义了邮件客户端软件和POP3邮件服务器的通信 规则
-
IMAP协议:全称为 Internet Message Access Protocol,Internet消息访问协议,它是对POP3协议一种扩展,也是定义了邮件客户端软件和IMAP邮件服务器的通信规则
1、准备
以网易163邮箱为例子,准备一个163的邮箱号码
在设置里找到 POP3/SMTP/IMAP 开启相应的服务,这时候会让你发送短信,验证授权,然后在网页会出现一个授权码,请保存那个授权码,请保存那个授权码,请保存那个授权码!重要事情说3遍。
这个在本页面下方
2、在项目pom文件加入依赖
<!--发送邮件-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
3、配置application.yml
spring:
# 邮箱服务配置
mail:
# 发送邮件服务器
host: smtp.163.com
# 发送邮件邮箱地址
username: 123123@163.com
#授权码,不是邮箱密码, 自己改成获取到的那个授权码
password: DHERTYDFGDFGS
# 发件人,和上面username一致
addresser: 123123@163.com
# 开启ssl协议
properties.mail.smtp.starttls.enable: true
properties.mail.smtp.starttls.required: true
properties.mail.smtp.ssl.enable: true
default-encoding: utf-8
4、创建发送邮件服务对象
package com.tsai.user.service;
/**
* @ClassName: MailService
* @Author: Tsai-JH
* @Date: 2021/7/17 15:53
* @Description: 邮箱服务层接口
*/
public interface MailService {
/**
* 发送邮件
*
* @param to 收件人
* @param subject 主题
* @param content 内容
*/
void sendMail(String to, String subject, String content);
}
package com.tsai.user.service.impl;
import com.tsai.user.service.MailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* @ClassName: MailServiceImpl
* @Author: Tsai-JH
* @Date: 2021/7/17 15:54
* @Description: 邮箱服务层实现类
*/
@Service
@Slf4j
public class MailServiceImpl implements MailService {
@Resource
private JavaMailSender mailSender;
@Value("${spring.mail.addresser}")
private String addresser;
/**
* 发送邮箱
*
* @param to 收件人
* @param subject 主题
* @param content 内容
*/
@Override
public void sendMail(String to, String subject, String content) {
// 邮箱消息对象
SimpleMailMessage message = new SimpleMailMessage();
//发送人
message.setFrom(addresser);
// 收件人
message.setTo(to);
// 主题
message.setSubject(subject);
// 内容
message.setText(content);
mailSender.send(message);
log.info("邮件发送成功 : {}", message.toString());
}
}
5、controller暴露接口
@Resource
private MailService mailService;
@PostMapping("mail")
@ApiOperation(notes = "发送邮件", value = "发送邮件")
public void sendMail(@ApiParam(value = "收件人", name = "to", required = true) String to,
@ApiParam(value = "主题", name = "subject", required = true) String subject,
@ApiParam(value = "内容", name = "content", required = true) String content) {
mailService.sendMail(to, subject, content);
}
controller的格式是swagger的,然后就可以发送邮件了!