通过RabbitMQ实现邮箱的发送订阅功能

本文介绍了如何通过RabbitMQ实现邮件发送订阅功能。首先进行邮件配置和服务的准备,接着设置RabbitMQ服务,然后在多模块SpringBoot工程中,邮件模块负责邮件服务,通信模块用于消息发送。通过监听组件,当检测到队列中有信息时自动消费,测试模块则负责生产信息到指定队列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

邮件配置准备工作

配置邮件服务

#配置邮件
spring.mail.host=smtp.qq.com
spring.mail.username = 1261349543@qq.com
spring.mail.password  = 授权码
spring.mail.port = 587
spring.mail.default-encoding=UTF-8
spring.mail.properties.mail.smtp.socketFactoryClass=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.debug=true

RabbitMQ准备工作

配置RabbitMQ服务

#连接RabbitMQ服务端
spring.rabbitmq.host=远程服务器IP
spring.rabbitmq.username=root
spring.rabbitmq.password=root
spring.rabbitmq.port=5672

多模块测试

创建多模块SpringBoot工程emailmessage

  1. 邮件模块 email-service
    引入spring-boot-starter-mail依赖、spring-boot-starter-amqp依赖
    同时有emailmessgae这个parent
 //创建通道
    @Bean
    Queue queue(){
        return  new Queue("panlijie.mail");
    }

再提供监听组件

@Component
public class RabbitMQListener {
    @Autowired
    JavaMailSender javaMailSender;
    @Autowired
    MailProperties mailProperties;
    @RabbitListener(queues = "panlijie.mail")
    public void handler(String msg){
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
        try {
            helper.setSubject("这是一封测试邮件");
            helper.setFrom(mailProperties.getUsername());
            helper.setTo("1261349543@qq.com");
            helper.setText(msg);
            javaMailSender.send(mimeMessage);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}

这里注入MailProperties配置类,获取在配置文件中的配置
Properties源码

  1. 通信模块 message-service
    引入spring-boot-starter-amqp依赖
    这里同样要配置RabbtiMQ的服务
    导入依赖是为了向信道发送信息
    在测试类测试:
    @Autowired
    RabbitTemplate rabbitTemplate;
    @Test
    void contextLoads() {
        String msg = "你好!";
        rabbitTemplate.convertAndSend("panlijie.mail",msg);
    }

总的来说

当监听信道的组件检测到有代发的信息时,会自动获取(消费),直到Queue不存在信息为止,而测试模块可以向指定Queue生产信息.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值