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

导读:本篇文章讲解 使用rabbitmq作为消息中间件实现简单邮件发送业务,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

在项目中用到了邮件发送的业务(新员工入职,入职后自动向其发送入职邮件),这里使用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. 测试
    在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/4968.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!