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

在Strapi中使用Sendgrid时收到401 Unauthorized错误

排查Strapi内置忘记密码API返回401 Unauthorized错误(Sendgrid配置)

问题描述

尝试在应用中通过Strapi内置API添加“忘记密码”功能,已在config/plugins.js中配置Sendgrid,配置代码如下:

module.exports = ({ env }) => ({
    email: {
      provider: "sendgrid",
      providerOptions: {
        apiKey: env('SENDGRID_API_KEY'),
      },
      settings: {
        defaultFrom: "myemail@gmail.com",
        defaultReplyTo: "myemail@gmail.com",
      },
    },
  });

目前调用API时返回401 Unauthorized错误,已多次检查环境变量中的API密钥,还重新创建过两次密钥,但问题依旧。该功能之前正常工作,现在不知问题出在哪里,求解答。


排查方向

  • 验证环境变量加载有效性:
    临时在config/plugins.js中添加console.log(env('SENDGRID_API_KEY')),启动Strapi后查看控制台输出,确认密钥和Sendgrid后台的完全一致,注意不要包含空格、换行符或多余引号(.env文件中格式应为SENDGRID_API_KEY=your_raw_key,不要加引号包裹)。

  • 检查Sendgrid API密钥权限:
    登录Sendgrid后台,找到对应API密钥的权限设置,确保勾选了Mail Send权限——忘记密码功能依赖邮件发送权限,若权限被修改或未正确配置,即使密钥正确也会返回401。

  • 确认Sendgrid账户状态:
    检查Sendgrid账户是否因发送量超限、垃圾邮件投诉超标等原因被限制或暂停,账户异常会直接导致API调用权限失效。

  • 核对插件与Strapi版本兼容性:
    若近期更新过Strapi或邮件插件,可能存在版本不匹配问题。尝试重新安装适配当前Strapi版本的Sendgrid插件:

    npm uninstall strapi-provider-email-sendgrid
    npm install strapi-provider-email-sendgrid@对应版本号
    
  • 排查请求格式问题:
    Strapi的/auth/forgot-password接口不需要用户认证,但需确保请求的Content-Type为application/json,且请求体包含合法的email字段。用curl测试示例:

    curl -X POST http://your-strapi-domain/auth/forgot-password \
      -H "Content-Type: application/json" \
      -d '{"email": "target-user@example.com"}'
    
  • 查看详细日志定位原因:
    检查Strapi项目logs目录下的服务器日志,以及Sendgrid后台的Activity日志,日志会明确记录401错误的具体触发原因(如密钥无效、权限不足等)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:54:22