# 邮件节点和消息队列节点测试指南 ## 📋 测试概述 本指南将帮助您测试新实现的**邮件节点**和**消息队列节点**功能。 ## ✅ 已完成功能 ### 1. 邮件节点 (Email Node) - ✅ SMTP配置(服务器、端口、用户名、密码) - ✅ TLS/SSL支持 - ✅ 发件人、收件人、抄送、密送 - ✅ 邮件主题和正文(支持纯文本和HTML) - ✅ 附件支持(文件路径或Base64编码) - ✅ 变量替换(支持 {key} 和 ${key} 格式) ### 2. 消息队列节点 (Message Queue Node) - ✅ RabbitMQ集成 - Exchange和Routing Key支持 - 直接队列发送 - 变量替换 - ✅ Kafka集成 - Topic发送 - 多服务器配置 - 变量替换 ## 🧪 测试步骤 ### 前置条件 1. **安装依赖** ```bash cd /home/renjianbo/aiagent/backend pip3 install aiosmtplib aio-pika kafka-python ``` 2. **重启后端服务**(如果需要) ```bash # 如果使用Docker docker-compose restart backend # 如果直接运行 # 重启uvicorn服务 ``` ### 测试1: 邮件节点 #### 方式一:使用测试SMTP服务(推荐) 1. **注册测试邮箱服务** - [Mailtrap](https://mailtrap.io) - 免费测试邮箱 - [Ethereal Email](https://ethereal.email) - 临时测试邮箱 2. **在前端创建测试工作流** - 登录系统 - 创建工作流 - 添加节点: - 开始节点 - 邮件节点 - 结束节点 3. **配置邮件节点** ``` SMTP服务器: smtp.mailtrap.io (或从Mailtrap获取) SMTP端口: 2525 (或587) SMTP用户名: [从Mailtrap获取] SMTP密码: [从Mailtrap获取] 使用TLS: 是 发件人邮箱: test@example.com 收件人邮箱: recipient@example.com 邮件主题: 测试邮件 - {test_key} 邮件正文类型: 纯文本 邮件正文: 这是一封测试邮件。\n\n测试数据: {test_data} ``` 4. **运行工作流** - 输入参数: ```json { "test_key": "Hello World", "test_data": "这是测试数据" } ``` - 点击"运行" - 检查执行结果 #### 方式二:使用Gmail SMTP 1. **配置Gmail应用专用密码** - 登录Google账号 - 启用两步验证 - 生成应用专用密码 2. **配置邮件节点** ``` SMTP服务器: smtp.gmail.com SMTP端口: 587 SMTP用户名: your-email@gmail.com SMTP密码: [应用专用密码] 使用TLS: 是 发件人邮箱: your-email@gmail.com 收件人邮箱: recipient@example.com 邮件主题: 测试邮件 邮件正文: 这是一封测试邮件 ``` ### 测试2: RabbitMQ消息队列节点 #### 前置条件:启动RabbitMQ **使用Docker启动RabbitMQ:** ```bash docker run -d \ --name rabbitmq \ -p 5672:5672 \ -p 15672:15672 \ -e RABBITMQ_DEFAULT_USER=admin \ -e RABBITMQ_DEFAULT_PASS=admin123 \ rabbitmq:3-management ``` 访问管理界面: http://localhost:15672 (用户名: admin, 密码: admin123) #### 测试步骤 1. **在前端创建测试工作流** - 添加节点: - 开始节点 - 消息队列节点 - 结束节点 2. **配置消息队列节点** ``` 队列类型: RabbitMQ 主机地址: localhost 端口: 5672 用户名: admin 密码: admin123 队列名称: test_queue Routing Key: test.routing.key 消息内容: {"test_key": "{test_key}", "test_data": "{test_data}"} ``` 3. **运行工作流** - 输入参数: ```json { "test_key": "Hello RabbitMQ", "test_data": "这是测试数据" } ``` - 点击"运行" - 在RabbitMQ管理界面查看队列中的消息 ### 测试3: Kafka消息队列节点 #### 前置条件:启动Kafka **使用Docker Compose启动Kafka:** ```yaml # docker-compose-kafka.yml version: '3.8' services: zookeeper: image: confluentinc/cp-zookeeper:latest environment: ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_TICK_TIME: 2000 ports: - "2181:2181" kafka: image: confluentinc/cp-kafka:latest depends_on: - zookeeper ports: - "9092:9092" environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 ``` 启动命令: ```bash docker-compose -f docker-compose-kafka.yml up -d ``` #### 测试步骤 1. **在前端创建测试工作流** - 添加节点: - 开始节点 - 消息队列节点(选择Kafka) - 结束节点 2. **配置消息队列节点** ``` 队列类型: Kafka Bootstrap Servers: localhost:9092 Topic: test_topic 消息内容: {"test_key": "{test_key}", "test_data": "{test_data}"} ``` 3. **运行工作流** - 输入参数: ```json { "test_key": "Hello Kafka", "test_data": "这是测试数据" } ``` - 点击"运行" - 使用Kafka消费者工具查看消息 ## 🔍 验证要点 ### 邮件节点验证 - ✅ 邮件成功发送 - ✅ 变量替换正确(主题和正文中的 {key} 被替换) - ✅ HTML格式邮件正确渲染 - ✅ 附件正确附加(如果配置了附件) ### 消息队列节点验证 - ✅ 消息成功发送到队列 - ✅ 变量替换正确 - ✅ RabbitMQ: 消息出现在指定队列 - ✅ Kafka: 消息出现在指定Topic ## 🐛 常见问题 ### 邮件节点问题 1. **SMTP连接失败** - 检查SMTP服务器地址和端口 - 检查防火墙设置 - 确认TLS/SSL配置正确 2. **认证失败** - 检查用户名和密码 - Gmail需要使用应用专用密码 - 确认账号已启用SMTP访问 3. **变量未替换** - 确认输入数据中包含对应的key - 检查变量格式:{key} 或 ${key} ### 消息队列节点问题 1. **RabbitMQ连接失败** - 确认RabbitMQ服务正在运行 - 检查主机地址和端口 - 确认用户名和密码正确 2. **Kafka连接失败** - 确认Kafka服务正在运行 - 检查Bootstrap Servers配置 - 确认Topic已创建 3. **消息未发送** - 检查节点配置 - 查看执行日志 - 确认队列/Topic存在 ## 📝 测试检查清单 - [ ] 邮件节点配置验证 - [ ] 邮件节点变量替换测试 - [ ] 邮件节点HTML格式测试 - [ ] 邮件节点附件测试(可选) - [ ] RabbitMQ节点配置验证 - [ ] RabbitMQ节点消息发送测试 - [ ] Kafka节点配置验证 - [ ] Kafka节点消息发送测试 - [ ] 错误处理测试(无效配置) - [ ] 执行日志验证 ## 🎯 下一步 测试通过后,您可以: 1. 在实际工作流中使用这些节点 2. 继续开发其他功能(模板市场、协作、批量操作) 3. 优化节点功能和用户体验 --- **测试脚本位置**: `/home/renjianbo/aiagent/backend/test_email_mq_nodes.py` **最后更新**: 2024年