Kiwi TCMS V12.2修改测试计划/用例时无法发送邮件求助
Kiwi TCMS V12.2 修改测试计划/用例无法触发邮件通知的排查与解决
问题描述
Kiwi TCMS V12.2在修改测试计划或测试用例时无法发送邮件。已确认测试计划和测试用例均已开启邮件通知,且SMTP服务配置正常(测试邮件、修改密码邮件可正常发送),SMTP服务器无拒收/退回记录,推测邮件未被触发发送。
已完成的配置
local-settings.py 配置
SERVER_EMAIL = DEFAULT_FROM_EMAIL = 'kiwitcms@example.com' # additional Kiwi TCMS setting EMAIL_SUBJECT_PREFIX = '[Kiwi-TCMS] ' # AWS SES HOST EMAIL_HOST = '<removed>' EMAIL_PORT = 25 EMAIL_HOST_USER = '<removed>' EMAIL_HOST_PASSWORD = '<removed>' # Enable TLS EMAIL_USE_TLS = True
docker-compose.yml 相关配置
web: container_name: kiwi_web depends_on: - db restart: always image: kiwitcms/kiwi:v12.2 # image: kiwitcms/kiwi:latest ports: - 80:8080 - 443:8443 volumes: - uploads:/Kiwi/uploads:Z - ./local_settings.py:/venv/lib64/python3.9/site-packages/tcms/settings/local_settings.py
排查与解决步骤
确认通知接收人配置
- 检查测试计划/测试用例的「通知设置」中,是否已添加正确的接收人邮箱。Kiwi TCMS的通知默认仅发送给关联的负责人、创建者或指定的通知列表,若未配置接收人,即使开启通知也不会触发邮件。
- 进入测试计划详情页,点击「通知」按钮,确认已添加需要接收通知的用户或邮箱地址;测试用例操作同理。
检查后台任务队列状态
Kiwi TCMS的邮件通知(除测试邮件、密码重置外)通常通过Celery异步任务队列发送,需确认Celery服务是否正常运行:- 执行命令查看容器内Celery进程状态:
docker exec kiwi_web ps aux | grep celery - 若Celery未运行,需在docker-compose.yml中补充Celery、Celery-beat及Redis服务配置,示例如下:
redis: container_name: kiwi_redis image: redis:alpine restart: always celery: container_name: kiwi_celery depends_on: - db - redis restart: always image: kiwitcms/kiwi:v12.2 command: celery -A tcms worker -l info volumes: - uploads:/Kiwi/uploads:Z - ./local_settings.py:/venv/lib64/python3.9/site-packages/tcms/settings/local_settings.py environment: - CELERY_BROKER_URL=redis://redis:6379/0 celery-beat: container_name: kiwi_celery_beat depends_on: - db - redis restart: always image: kiwitcms/kiwi:v12.2 command: celery -A tcms beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler volumes: - uploads:/Kiwi/uploads:Z - ./local_settings.py:/venv/lib64/python3.9/site-packages/tcms/settings/local_settings.py environment: - CELERY_BROKER_URL=redis://redis:6379/0 - 更新配置后重启所有服务:
docker-compose down && docker-compose up -d
- 执行命令查看容器内Celery进程状态:
验证异步任务是否被触发
- 查看Celery容器日志,确认修改操作是否触发了邮件任务:
docker logs kiwi_celery - 若日志中无相关任务记录,可在local-settings.py中添加日志配置,开启DEBUG模式排查:
DEBUG = True LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console': { 'class': 'logging.StreamHandler', }, }, 'loggers': { 'tcms.core.contrib.comments': { 'handlers': ['console'], 'level': 'DEBUG', }, 'tcms.management': { 'handlers': ['console'], 'level': 'DEBUG', }, }, } - 重启web容器后,再次修改测试计划/用例,查看控制台日志是否有任务触发记录。
- 查看Celery容器日志,确认修改操作是否触发了邮件任务:
确认权限与全局通知开关
- 检查当前操作用户是否拥有修改测试计划/用例的权限,以及是否在通知范围内。若用户修改自己创建的内容,需确认通知设置是否包含创建者。
- 进入「管理」->「通知设置」,确认全局通知开关已开启,且测试计划、测试用例的修改事件通知已启用。
内容的提问来源于stack exchange,提问作者BogdanK
相关产品推荐
相关产品推荐

