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

本地测试Sendgrid遇HTTP Error 403: Forbidden问题求助

SendGrid API 请求返回403/401错误排查方案

问题场景

本地开发服务器测试SendGrid基础功能时,请求持续返回403(禁止访问)或401(未授权)错误。相关配置如下:

  • API密钥以sendgrid_api_key为名存放在.env文件中
  • 该密钥已配置SendGrid全部权限
  • 已安装sendgrid==6.9.7版本
  • 测试代码:
import os
import sendgrid

def sendgrid_welcome_email(request):
    try:
        sg = sendgrid.SendGridAPIClient(api_key=os.environ.get('sendgrid_api_key'))
        response = sg.client.contactdb.lists.get()
        print(response.status_code)
        print(response.body)
        print(response.headers)
    except Exception as ex:
        print("Unexpected error: " + str(ex))
        return "Bad", 500

运行后报错:Unexpected error: HTTP Error 403: Forbidden

排查步骤

  • 验证API密钥加载状态:在代码中添加print(os.environ.get('sendgrid_api_key')),确认密钥是否成功从.env读取。如果输出None,说明.env文件未被正确加载:
    • 检查.env是否放在项目根目录
    • 确认是否通过python-dotenv库手动加载环境变量(SendGrid库不会自动读取.env)
  • 核对密钥权限:登录SendGrid后台,确认该密钥是否启用了ContactDB相关权限(当前请求的是contactdb.lists.get()端点),避免权限配置未实际生效
  • 确认端点调用正确性:查阅sendgrid==6.9.7的官方文档,验证sg.client.contactdb.lists.get()是否为该版本的正确调用方式
  • 排查网络环境:本地代理或防火墙可能阻断请求,尝试关闭代理或切换网络后重新测试
  • 更换密钥测试:若密钥曾泄露或长期未更新,可能已被封禁,生成新的API密钥重试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:27:29