使用rabbitmq作为消息中间件实现简单邮件发送业务

在项目中用到了邮件发送的业务(新员工入职,入职后自动向其发送入职邮件),这里使用rabbitmq作为消息中间件简单实现一个邮件发送的业务

1. 准备一个发送者邮箱,开启SMTP服务
这里使用了一个163邮箱作为发送者邮箱,开启SMTP服务得到一个授权码
在这里插入图片描述
在这里插入图片描述

  1. 新建一个模块作为邮件发送模块
    在这里插入图片描述

  2. 依赖

        <!--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>
  1. 配置
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
  1. 邮件模板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>

  1. 创建一个队列
    @Bean
    public Queue queue(){
        return new Queue("mail.yyx");
    }
  1. 在项目中需要的地方将发送的信息添加到rabbitmq的消息队列中
    msg为对应邮件模板的数据
rabbitTemplate.convertAndSend("mail.yyx",msg);
  1. 邮件发送模块创建一个消费者消费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());
        }
    }

}
  1. 测试
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LeBron永鑫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值