You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用os.environ.get调用SendGrid发邮件时出现401错误

SendGrid 401错误排查(环境变量可获取但无法使用)

问题现象

使用os.environ.get('SENDGRID_API_KEY')调用SendGrid发送邮件时触发401认证错误,但直接将API密钥硬编码进代码就能正常发送;且在代码中打印os.environ.get('SENDGRID_API_KEY')能输出正确密钥。

排查与解决方法

1. 检查环境变量值是否包含隐藏字符

设置环境变量时,echo命令可能自动添加换行符,或者输入API密钥时不小心带入首尾空格,这些字符肉眼不可见但会导致认证失败。

  • 解决步骤:
    • 手动打开~/.zshenv文件,检查SENDGRID_API_KEY的定义,确保密钥前后没有空格、换行或多余引号;
    • 重新设置环境变量时使用-n参数避免添加换行:
      echo -n 'export SENDGRID_API_KEY=Actual API key' >> ~/.zshenv
      source ~/.zshenv
      
    • 在Python代码中用repr()打印变量,查看是否有隐藏字符:
      print(repr(os.environ.get('SENDGRID_API_KEY')))
      

2. 移除变量首尾空白字符

如果确认环境变量值存在多余空白,可在代码中对获取到的密钥做strip处理:

sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY').strip())

3. 检查环境变量是否被覆盖

后续的shell配置文件(如~/.zshrc、~/.profile)可能重新定义了SENDGRID_API_KEY,导致运行Python时拿到的不是正确值。

  • 解决步骤:
    • 在终端运行echo $SENDGRID_API_KEY,确认输出的密钥和实际一致;
    • 检查所有shell配置文件,确保没有重复定义SENDGRID_API_KEY的语句。

4. 确认API密钥权限

虽然硬编码能正常发送,仍需确认该API密钥是否拥有邮件发送权限(可在SendGrid控制台查看密钥的权限设置),避免因权限变更导致认证失败。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:40:48