You need to enable JavaScript to run this app. GitHub Actions中Python脚本读取Secrets存储邮箱凭证的方法
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions中Python脚本读取Secrets存储邮箱凭证的方法

问题根因

你之前工作流配置中env:字段后加|的写法是错误的。管道符|是YAML的块标量语法,作用是把后续缩进的整块内容解析为单一字符串值,不会被识别为键值对形式的环境变量映射。这直接导致两个Secrets的数值没有被正确注入到Python脚本的运行环境中,脚本通过os.environ.get()读取到的是None,最终触发SMTP登录失败、工作流运行报错。

正确配置方案

1. 修正工作流YAML的env语法

去掉env:后面的|,直接按照字典结构映射环境变量即可,修正后的执行步骤配置如下:

- name: execute py script # run sj-gobierno.py to get the latest data
  env:
    EMAIL_ADDRESS: ${{ secrets.EMAIL_ADDRESS }}
    EMAIL_PASSWORD: ${{ secrets.EMAIL_PASSWORD }}
  run: |
    python -m pip install --upgrade pip
    pip install -r requirements.txt
    python sj-gobierno.py

注意:run:字段后的|是正确写法,因为run需要接收多行shell命令字符串,符合块标量的使用场景;但env:必须保持字典结构,不能加块标量符号。

2. Python脚本的读取逻辑无需大改

你之前写的通过os.environ.get()读取环境变量的逻辑,和本地跑通时的逻辑完全一致,只需要增加一层判空校验,避免环境变量缺失时直接抛出难以定位的SMTP报错:

# 替换原有环境变量读取代码
EMAIL_ADDRESS = os.environ.get('EMAIL_ADDRESS')
EMAIL_PASSWORD = os.environ.get('EMAIL_PASSWORD')

# 简单校验变量是否成功读取
if not EMAIL_ADDRESS or not EMAIL_PASSWORD:
    raise ValueError("未读取到有效的邮箱环境变量,请检查GitHub Secrets注入配置")
配套排查要点
  • 确认创建的两个Secrets是仓库级别权限,名称拼写和配置完全一致(区分大小写,不要夹带多余空格)
  • 确认Secrets中存储的Gmail密码是账号开启两步验证后生成的应用专用密码,而非邮箱本身的登录密码
  • 排查阶段可以临时在run命令中增加校验语句,确认环境变量成功注入(仅判断变量是否存在,不要打印具体值避免泄露凭证):
run: |
  python -m pip install --upgrade pip
  pip install -r requirements.txt
  # 临时排查:仅判断变量存在性
  if [ -n "$EMAIL_ADDRESS" ] && [ -n "$EMAIL_PASSWORD" ]; then echo "环境变量注入正常"; else echo "环境变量缺失"; fi
  python sj-gobierno.py

内容的提问来源于stack exchange,提问作者canovasjm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.13 11:06:06