1.创建名为springboot-mail的springboot工程
2.导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.13</version>
</dependency>
<!--swagger依赖-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!--swagger ui-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
3.获取授权码
4.配置yml
server:
port: 8007
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
redis:
host: localhost
port: 6379
database: 2
mail:
host: smtp.qq.com
username: 要发生的邮箱
password: 生成的授权码
5.配置swagger
@Configuration
@EnableSwagger2
public class Swagger2Config {
/**
* 创建API应用
* apiInfo() 增加API相关信息
* 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
* 指定扫描的包路径来定义指定要建立API的目录。
* @return
*/
@Bean
public Docket coreApiConfig(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(adminApiInfo())
.groupName("adminApi")
.select()
.apis(RequestHandlerSelectors.basePackage("com.xulu"))
//只显示admin下面的路径
//.paths(Predicates.and(PathSelectors.regex("/admin/.*")))
.build();
}
private ApiInfo adminApiInfo(){
return new ApiInfoBuilder()
.title("邮件发送")
.description("测试发送邮件")
.version("1.0")
.contact(new Contact("Xiao Xulu","http://baidu.com","1435533194@qq.com"))
.build();
}
}
6.创建SendMailService
public interface SendMailService {
public void sendMailService(String mail);
}
7.创建SendMailServiceImpl
@Service
public class SendMailServiceImpl implements SendMailService {
@Autowired
private JavaMailSender mailSender;
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Value("${spring.mail.username}")
private String from;
@Override
public void sendMailService(String mail) {
String code = RandomUtil.randomNumbers(6);
String context="[romance]您的验证码为"+code+",有效期为2分钟,请勿透露给他人。";
stringRedisTemplate.opsForValue().set("code",code,120, TimeUnit.SECONDS);
MimeMessage message=mailSender.createMimeMessage();
try {
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(message, true);
mimeMessageHelper.setFrom(from);
mimeMessageHelper.setTo(mail);
mimeMessageHelper.setSubject("romance");
mimeMessageHelper.setText(context,true);
mailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
8.创建SendMailController
@RestController
@Api(tags = "邮件发送")
public class SendMailController {
@Autowired
private SendMailService sendMailService;
@ApiOperation("发送验证码")
@GetMapping("/sendMail")
public String sendMail(String mail){
sendMailService.sendMailService(mail);
return "success";
}
}
9.测试
访问http://localhost:8007/swagger-ui.html进行测试