一、前情提要
上一次我们完成了实训室楼理服务;由于在管理员受理工单和完成工单的时候需要发送邮件,所以这一次我们来完成邮件服务。
二、接口设计
由于在这里我们质询要在受理工单和完成工单的时候发送有几件,所以执行需要设计两个接口:
1.受理工单发送邮件:acceptOrderMail
- 参数:
userName
(报修人名字,类型为String
) - 参数:
userEmail
(报修人邮箱) - 返回值:
String
2.完成工单发送邮件:acceptOrderMail
- 参数:
userName
(报修人名字,类型为String
) - 参数:
userEmail
(报修人邮箱) - 返回值:
String
三、相关介绍
1.如何发送邮件?
平时我们发送有几件十分容易,只要登录邮箱,填入收信邮箱地址,写需要发送的内容,按下发送即可。但是在代码里面怎样实现?
其实在代码里面也有很多实现方式,有钱想省事可以找一些提供邮件服务的提供商,例如阿里云的接口市场,一搜一大把,只需要按照接口要求发起请求即可,缺点是按量付费,可能几百封邮件几毛钱。
除了以上的方法以外,我们也能自己实现,在SpringBoot我们可以使用自带的邮件服务进行开发。
四、实践操作
1.通过Maven
引入邮件服务
在pom.xml
中编写以下代码:
<!--邮件相关依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.添加邮件相关配置
在application.properties
下填入以下配置:
由于这里我是用的是OutLook邮箱,所以填写的主机名和端口都为outlook提供的,用户名和密码请填写自己申请的邮箱。
############################################################
#
# 邮箱 配置
#
############################################################
spring.mail.host=smtp-mail.outlook.com
spring.mail.port=587
spring.mail.username=
spring.mail.password=
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
3.按照上方的接口设计创建接口类EmailService
在com.repairsystem.service
下创建接口类EmailService
package com.repairsystem.service;
public interface EmailService {
String acceptOrderMail(String userName, String userEmail);
String completeOrderMail(String userName, String userEmail);
}
4.在常量工具类ConstantUtils
中添加邮箱地址常量
创建内部类Mail
并下下邮箱地址常量:
class Mail{
public static final String FROM_MAIL="自己申请的邮箱地址";
}
5.创建接口实现类EmailServiceImpl
在com.repairsystem.service.Impl
下创建接口实现类EmailServiceImpl
,实现接口EmailService
package com.repairsystem.service.Impl;
import com.repairsystem.service.EmailService;
import com.repairsystem.utils.ConstantUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
import java.util.Date;
@Service
public class EmailServiceImpl implements EmailService {
@Autowired
private JavaMailSender mailSender;
@Override
public String acceptOrderMail(String userName, String userEmail) {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(ConstantUtils.Mail.FROM_MAIL);
simpleMailMessage.setTo(userEmail);
simpleMailMessage.setSubject("【维修中】感谢您反馈机房报修问题");
simpleMailMessage.setText("亲爱的"+userName+"先生/女生,您提交的报修工单机房管理员已确实收到,感谢您的反馈。机房管理员正在快马加鞭地解决您提交问题,维修完成后将会通过邮件通知您。");
simpleMailMessage.setSentDate(new Date());
mailSender.send(simpleMailMessage);
return "OK";
}
@Override
public String completeOrderMail(String userName, String userEmail) {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(ConstantUtils.Mail.FROM_MAIL);
simpleMailMessage.setTo(userEmail);
simpleMailMessage.setSubject("【维修完成】感谢您反馈机房报修问题已完成");
simpleMailMessage.setText("亲爱的"+userName+"先生/女生,您提交的报修机房工单已维修完成,感谢您的反馈,让我们的机房环境变得更好!");
simpleMailMessage.setSentDate(new Date());
mailSender.send(simpleMailMessage);
return "OK";
}
}
到这里,Service层开发——邮件服务开发已经完成了。如果您对次篇文章有疑问,可以在文章下方留言,谢谢您的阅读。如对【机房报修管理系统】系列文章有兴趣,可以关注或收藏我的文章,您的支持是我最大的动力,我会尽快推出下一期内容,敬请期待。