广告
返回顶部
首页 > 资讯 > 后端开发 > Python >如何使用ActiveMQ中间件方式发送邮件
  • 716
分享到

如何使用ActiveMQ中间件方式发送邮件

2024-04-02 19:04:59 716人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

前言 在大型互联网公司中,一般都会搭建内部的消息服务平台,处理公司内部的各种消息服务,比如:发送邮件、发送短信、微信推送等,公司内部消息平台再去调用第三发消息平台。消息服务平台的接

前言

在大型互联网公司中,一般都会搭建内部的消息服务平台,处理公司内部的各种消息服务,比如:发送邮件、发送短信、微信推送等,公司内部消息平台再去调用第三发消息平台。消息服务平台的接口有两种:同步和异步,同步需求一般是需要返回调用第三方平台是否成功,否则都采用异步的。

公司内部消息服务平台

调用内部消息服务平台,使用消息中间件

发送消息一般都会做消息模板,调用的时候传模板id

整合Eamil实现异步发送邮件信息

采用163邮件接口,先注册163邮箱,并开通pop3协议,此时会有一个授权码,发送内容不能带有广告,否则会被163拦截,导致发送失败。

场景:会员服务调用内部消息服务平台发送邮件

会员服务(生产者)

Maven依赖


        <!-- SpringBoot整合WEB组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- ActiveMQ依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
        <!-- FastJSON工具包 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>LATEST</version>
        </dependency>

YML配置文件


spring:
  activemq:
    broker-url: tcp://127.0.0.1:61616    # ActiveMQ消息中间件服务器通讯地址
    user: admin  # 用户名
    passWord: admin  #密码
queue: springboot-queue   #自定义队列名,等下程序中会用到
server:
  port: 8080

配置类


@Configuration
public class QueueConfig {
    //获取队列名
    @Value("${queue}")
    private String queue;
    //注册bean
    @Bean
    public Queue logQueue() {
        return new ActiveMQQueue(queue);
    }
}

创建Producer


@Component
@EnableScheduling
public class Producer {
    @Autowired
    private JmsMessagingTemplate jmsMessagingTemplate;
    @Autowired
    private Queue queue;
    //每隔5秒向消息队列发送消息
    @Scheduled(fixedDelay = 5000)
    public void send(){
        //用户名,封装邮件内容时使用
        String userName = "张三"+ new Random().nextInt(20);
        //指定发送到哪个邮箱 (邮件接收者邮箱)
        String email = "593****77@qq.com";
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("userName",userName);
        jsonObject.put("email",email);
        //将发送的消息转换为Json字符串
        String msg = jsonObject.toJSONString();
        System.out.println("生产者向消费者发送内容:" +  msg);
        jmsMessagingTemplate.convertAndSend(queue,msg);
    }
}

启动类


@EnableScheduling
@SpringBootApplication
public class ActivemqQueueApplication {
    public static void main(String[] args) {
        SpringApplication.run(ActivemqQueueApplication.class, args);
    }
}

消息服务平台(消费者)

Maven依赖


        <!-- SpringBoot整合Web组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        
       <!-- activemq依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
        <!-- SpringBoot 整合Emai -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <!-- 工具包 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>LATEST</version>
        </dependency>

YML配置文件


spring:
  activemq:
    # ActiveMQ消息中间件服务器通讯地址
    broker-url: tcp://127.0.0.1:61616
    user: admin  # 用户名
    password: admin  #密码
  # 发送邮件配置
  mail:
    # 邮件服务器地址
    host: smtp.163.com
    # 邮箱用户名(邮件发送者)
    username: *********@163.com
    # 授权码,163邮箱开通协议时设置的那个授权码,不是登录密码
    password: wx1**********3
    enable:  true
    smtp:
      auth: true
    starttls:
      enable: true
      required: true
#自定义队列名属性,等下程序中会用到(以生产者的队列名一致)
queue: springboot-queue
server:
  port: 8081

创建Consumer


@Component
public class Consumer{
    @Autowired
    private JavaMailSender javaMailSender;
    @Value("${spring.mail.username}") //发送方邮箱
    private String toEmail;
    @JmsListener(destination = "${queue}")     //监听的队列,配置文件中的queue属性
    public void receive(String msg){
        if(StringUtils.isEmpty(msg)){
            return;
        }
        System.out.println("收到生产者消息:"+msg);
        JSONObject jsonObject = JSONObject.parseObject(msg);
        String userName = jsonObject.getString("userName");
        String eamil = jsonObject.getString("eamil");
        //发送邮件
        sendEmail(userName,toEmail);
    }
    
    public String sendEmail(String userName,String toEmail){
        //发送消息对象
        SimpleMailMessage message = new SimpleMailMessage();
        //发送者
        message.setFrom(toEmail);
        //接收者
        message.setTo(toEmail);
        //主题(标题)
        message.setSubject("尊敬的"+userName);
        //内容
        message.setText("欢迎使用您使用本公司的产品!");  //发送html,发送html格式源码
        javaMailSender.send(message);
        System.out.println("邮件发送完成:"+ JSONObject.toJSONString(message));
        return  "send success!";
    }
}

启动类


@SpringBootApplication
public class ActivemqQueueConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ActivemqQueueConsumerApplication.class, args);
    }
}

测试

  • 启动会员服务和消息服务平台服务
  • 注意:启动前保证消息队列里面没有消息,有的话则先删除该队列,否则容易造成数据类型不一致导致Json解析异常出错。

会员服务:

在这里插入图片描述

消息服务平台:

此时消息服务平台发送邮件成功!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 如何使用ActiveMQ中间件方式发送邮件

本文链接: https://www.lsjlt.com/news/129802.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用ActiveMQ中间件方式发送邮件
    前言 在大型互联网公司中,一般都会搭建内部的消息服务平台,处理公司内部的各种消息服务,比如:发送邮件、发送短信、微信推送等,公司内部消息平台再去调用第三发消息平台。消息服务平台的接...
    99+
    2022-11-12
  • Python中如何使用SMTP发送邮件
    本篇文章为大家展示了Python中如何使用SMTP发送邮件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python创建 SMTP 对象语法import smtplib smtp...
    99+
    2023-06-02
  • Python中有哪些发送邮件的方式
    今天就跟大家聊聊有关 Python中有哪些发送邮件的方式,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。方式一:smtplibsmtplib是 Python 自带的依赖库,可以直接导入...
    99+
    2023-06-16
  • Node.js中如何发送邮件
    这篇文章给大家介绍Node.js中如何发送邮件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.首先我们初始化一个Node项目npm init -y2.创建一个ap...
    99+
    2022-10-19
  • 如何使用node发送qq邮件
    这篇文章主要介绍如何使用node发送qq邮件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用nodemailer包let transporter = ...
    99+
    2022-10-19
  • 如何使用java来发送邮件
    这篇文章主要介绍了如何使用java来发送邮件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用java来发送邮件文章都会有所收获,下面我们一起来看看吧。 首先看一下实现的...
    99+
    2022-10-19
  • 如何在PHP中发送邮件
    随着现代技术的快速发展,电子邮件已经成为人们日常生活和工作中必不可少的一部分。作为网站应用程序开发者,我们需要向网站的用户发送各种类型的邮件。PHP是一种广泛使用的服务器端脚本语言,它有着强大的邮件发送功能。本文将介绍如何使用PHP发送邮件...
    99+
    2023-05-22
    SMTP协议 PHP Mail函数 MIME类型
  • linux中shell如何发送邮件
    这篇文章主要介绍了linux中shell如何发送邮件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。开始: 这里因为很多路径我写死了,所以最好按照我的安装路径来安装。或者根据自...
    99+
    2023-06-13
  • 如何使用nodejs自动发送邮件
    这篇文章主要介绍“如何使用nodejs自动发送邮件”,在日常操作中,相信很多人在如何使用nodejs自动发送邮件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用node...
    99+
    2022-10-19
  • 如何使用PHP进行邮件发送
    要使用PHP发送电子邮件,可以使用PHP内置的邮件函数或者使用第三方库。使用PHP内置的邮件函数:1. 首先,确保你的PHP环境已经...
    99+
    2023-08-24
    PHP
  • PHP邮件发送类PHPMailer的使用方法
    本篇内容主要讲解“PHP邮件发送类PHPMailer的使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP邮件发送类PHPMailer的使用方法”吧!PHPMailer是一个专门用于ph...
    99+
    2023-06-17
  • 使用SpringBoot发送邮件的方法详解
    目录第一步,导jar包第二步,申请email授权密码第三步,编写yml文件第四步,编写工具类第五步,编写controller类第六步,测试第一步,导jar包 <!--E...
    99+
    2023-05-19
    SpringBoot发送邮件 SpringBoot邮件
  • springboot 使用QQ邮箱发送邮件的操作方法
    目录一、QQ邮箱打开POP3/SMTP服务二、springboot配置一、QQ邮箱打开POP3/SMTP服务 上面的服务开启后,会得到一串授权密码在springboot配置中需...
    99+
    2022-11-12
  • 如何使用阿里云 ECS 发送邮件
    随着互联网的发展,电子邮件已经成为人们日常生活中不可或缺的一部分。然而,对于很多初学者来说,如何使用阿里云 ECS发送邮件可能是个难题。本文将详细介绍如何使用阿里云 ECS发送邮件,包括设置发送邮件的账户和密码、设置邮件服务器的地址和端口、...
    99+
    2023-11-14
    阿里 如何使用 发送邮件
  • python中使用yagmail发送邮件功能
    1.使用前先要安装 yagmail pip install yagmail -i https://pypi.douban.com/simple 2.使用QQ邮箱发送邮件,使用的是...
    99+
    2022-11-12
  • Python中怎么使用SMTP发送邮件
    这篇“Python中怎么使用SMTP发送邮件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python中怎么使用SMTP发送...
    99+
    2023-06-28
  • Linux系统中如何使用命令发送邮件
    这篇文章将为大家详细讲解有关Linux系统中如何使用命令发送邮件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。管理服务器时我们经常需要写一些监测脚本,然后在出问题的时候通过邮件来通知。需求本文使用Cent...
    99+
    2023-06-27
  • Python如何调用API发送邮件
    这篇文章将为大家详细讲解有关Python如何调用API发送邮件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python 调用 APIPython 调用 API 非常简单,通常需要一个称为 request...
    99+
    2023-06-14
  • 如何用Python实现邮件发送
    今天小编给大家分享一下如何用Python实现邮件发送的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一. 准备用来发送邮件的邮...
    99+
    2023-07-06
  • PHP使用简单邮件传输协议(SMTP)发送邮件的方法
    随着互联网的发展,邮件已经成为了人们日常交流的重要方式之一。而对于一些网站开发者来说,在网站中发送邮件也显得尤为关键。PHP作为一种服务器端脚本语言,自然也需要提供一种发送邮件的方式。本文就将介绍PHP使用简单邮件传输协议(SMTP)发送邮...
    99+
    2023-05-22
    PHP 邮件发送 SMTP
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作