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

Asp.net Core项目集成SendGrid动态模板后邮件无法发送问题

SendGrid动态模板发送失败排查方案
  • 验证基础配置合法性

    • 核对你复制的Template ID是否与SendGrid后台「动态模板」页面对应的ID完全一致,注意不要误用旧版遗留模板的ID
    • 确认动态模板已在后台点击「发布」,草稿状态的模板无法被调用
    • 检查你使用的SendGrid API Key是否已开启「邮件发送」和「模板访问」权限,可在SendGrid后台API Key管理页核对权限范围
  • 检查请求参数格式正确性

    • 调用动态模板时,不要同时传入HtmlContent、Subject参数,两类参数会和模板配置产生冲突,直接导致请求失败
    • 确认传入的动态模板变量键名和模板里定义的变量完全一致,大小写敏感。例如模板中写的是{{FirstName}},代码里传firstName会导致变量匹配失败
    • 确认所有变量没有空值,空值变量会触发SendGrid的参数校验失败
      正确的发送代码参考如下:
    var sendGridClient = new SendGridClient("你的SendGrid API密钥");
    var mailMessage = new SendGridMessage();
    // 发件人邮箱必须是SendGrid后台已验证的地址
    mailMessage.SetFrom("no-reply@publishfinders.com", "PublishFinders团队");
    mailMessage.AddTo(Input.Email, user.FirstName);
    // 仅设置模板ID,不要额外设置主题和邮件内容
    mailMessage.SetTemplateId("你后台创建的动态模板ID");
    // 传入模板需要的所有变量
    mailMessage.SetTemplateData(new 
    {
        FirstName = user.FirstName,
        ConfirmUrl = HtmlEncoder.Default.Encode(callbackUrl)
    });
    // 新增日志输出,用于排查具体错误
    var response = await sendGridClient.SendEmailAsync(mailMessage);
    var responseCode = response.StatusCode;
    var errorMessage = await response.Body.ReadAsStringAsync();
    // 此处可将responseCode、errorMessage写入本地日志,直接查看具体报错原因
    
  • 后台发送记录排查

    直接登录SendGrid后台,进入「Activity Feed」页面,所有发送请求的记录都会展示在这里,失败的请求会标注具体失败原因:比如发件人未验证、模板不存在、变量格式错误、发送配额耗尽等,可直接对应解决。
  • 发件人配置校验

    确认你代码里用的发件人邮箱/域名,已经在SendGrid后台完成了单Sender验证或者域名验证,未验证的发件人发送任何邮件都会被拦截,不管是否使用模板。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:54:02