Springboot使用JavaMail发送邮件
开启邮箱POP3服务
记住授权码
创建项目
项目结构:
JavaMail依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
配置yml:
spring:
mail:
#smtp服务主机 qq邮箱则为smtp.qq.com
host: smtp.qq.com
#服务协议
protocol: smtp
# 编码集
default-encoding: UTF-8
#发送邮件的账户
username: xxxx@qq.com
#授权码
password: xxxx
test-connection: true
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
定义一个邮件类MailSenderEntity:
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* description: 邮件
*
* @author zwq
* @date 2021/11/17 17:11
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MailSenderEntity {
/*发送方*/
private String from;
/*标题*/
private String title;
/*内容*/
private String content;
/*接收方*/
private String[] tos;
}
Service层:
import com.zwq.main.constant.MailSenderEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
/**
* description: 发送邮件
*
* @author zwq
* @date 2021/11/17 17:08
*/
@Service
public class MailService {
/* 注入JavaMail */
@Autowired
private JavaMailSender javaMailSender;
public void sendMail(MailSenderEntity mailSenderEntity){
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(mailSenderEntity.getFrom());
simpleMailMessage.setSubject(mailSenderEntity.getTitle());
simpleMailMessage.setText(mailSenderEntity.getContent());
simpleMailMessage.setTo(mailSenderEntity.getTos());
javaMailSender.send(simpleMailMessage);
}
}
Controller层:
import com.zwq.main.constant.MailSenderEntity;
import com.zwq.main.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* description: 发送邮件
*
* @author zwq
* @date 2021/11/17 17:06
*/
@RestController
@RequestMapping("/main")
public class SendController {
@Autowired
private MailService mailService;
@PostMapping("/simple")
public void sendSimpleMail(@RequestBody MailSenderEntity mailSenderEntity){
mailService.sendMail(mailSenderEntity);
}
/* 测试发送邮件请求 */
@GetMapping("/test")
public void send(){
MailSenderEntity mailSenderEntity = new MailSenderEntity();
mailSenderEntity.setFrom("xxxx@qq.com");
mailSenderEntity.setTitle("测试");
mailSenderEntity.setContent("第一次发送邮件");
String[] strings = {"xxxx@qq.com"};
mailSenderEntity.setTos(strings);
mailService.sendMail(mailSenderEntity);
}
}