在项目中用到了邮件发送的业务(新员工入职,入职后自动向其发送入职邮件),这里使用rabbitmq作为消息中间件简单实现一个邮件发送的业务
1. 准备一个发送者邮箱,开启SMTP服务
这里使用了一个163邮箱作为发送者邮箱,开启SMTP服务得到一个授权码
-
新建一个模块作为邮件发送模块
-
依赖
<!--rabbitmq-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<!--mail依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!--thymeleaf模板-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
- 配置
server:
port: 8082
spring:
# 邮件配置
mail:
#邮件服务器地址 QQ邮箱为smtp.qq.com
host: smtp.163.com
#协议
protocol: smtp
default-encoding: UTF-8
#授权码
password: 开通SMTP服务获得的授权码
#发送者邮箱地址
username: 发送者邮箱地址
#邮箱端口 QQ邮箱为465
port: 25
# rabbitmq配置
rabbitmq:
username: guest
password: guest
host: 8.140.157.58
port: 5672
- 邮件模板mail.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.theymeleaf.org">
<head>
<meta charset="UTF-8">
<title>入职欢迎邮件</title>
</head>
<body>
欢迎 <span th:text="${name}"></span>加入大家庭,您的入职信息如下:
<table border="0.5">
<tr>
<td>姓名</td>
<td th:text="${name}"></td>
</tr>
<tr>
<td>职位</td>
<td th:text="${posName}"></td>
</tr>
<tr>
<td>职称</td>
<td th:text="${joblevelName}"></td>
</tr>
<tr>
<td>部门</td>
<td th:text="${departmentName}"></td>
</tr>
</table>
</body>
</html>
- 创建一个队列
@Bean
public Queue queue(){
return new Queue("mail.yyx");
}
- 在项目中需要的地方将发送的信息添加到rabbitmq的消息队列中
msg为对应邮件模板的数据
rabbitTemplate.convertAndSend("mail.yyx",msg);
- 邮件发送模块创建一个消费者消费rabbitmq的消息队列中的信息,发送邮件
Employee 为项目中的实体类,即为上边传入的msg
@Component
public class MailReceiver {
private static final Logger LOGGER = LoggerFactory.getLogger(MailReceiver.class);
@Resource
private JavaMailSender javaMailSender;
@Resource
private MailProperties mailProperties;
@Resource
private TemplateEngine templateEngine;
@RabbitListener(queues = "mail.yyx")
public void handler(Employee employee){
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage);
try {
//发件人
mimeMessageHelper.setFrom(mailProperties.getUsername());
//收件人
mimeMessageHelper.setTo(employee.getEmail());
//主题
mimeMessageHelper.setSubject("入职欢迎邮件");
//发送日期
mimeMessageHelper.setSentDate(new Date());
//邮件发送内容
Context context = new Context();
context.setVariable("name",employee.getName());
context.setVariable("posName",employee.getPosName());
context.setVariable("joblevelName",employee.getJoblevelName());
context.setVariable("departmentName",employee.getDepartmentName());
String mail = templateEngine.process("mail", context);
mimeMessageHelper.setText(mail,true);
//发送邮件
javaMailSender.send(mimeMessage);
} catch (MessagingException e) {
LOGGER.error("邮件发送失败======>",e.getMessage());
}
}
}
- 测试
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/4968.html