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

SendInBlue(Brevo) API参数无法正常传递,寻求技术支持

Brevo(原SendInBlue)API 参数不生效问题修复

问题根源

  • 内容配置冲突:同时指定TemplateId和HtmlContent,API会优先使用后台模板内容,自定义的HtmlContent和Subject会被忽略,导致参数无法匹配。
  • 变量名不匹配:HtmlContent中使用{{params.parameter}}、{{params.subject}},但代码里Params添加的是NOME、SENHA,变量名完全对应不上。
  • 冗余参数传递:同时在SendSmtpEmail的Params字段和messageVersions中传递参数,单收件场景无需使用messageVersions,反而会造成解析混乱。

修正后的代码

using System.Diagnostics;
using Newtonsoft.Json.Linq;
using sib_api_v3_sdk.Api;
using sib_api_v3_sdk.Client;
using sib_api_v3_sdk.Model;
using Task = System.Threading.Tasks.Task;

namespace cjuridico.Domain.Models.Email;

public static class CadastroEmail
{
    public static async Task EnviarEmail(string destinatario, string mensagem)
    {
        Configuration.Default.AddApiKey("api-key", "<omitted>");
        var apiInstance = new TransactionalEmailsApi();

        // 发件人配置
        var sender = new SendSmtpEmailSender("John Doe", "example@example.com");

        // 收件人配置
        var toList = new List<SendSmtpEmailTo>
        {
            new SendSmtpEmailTo("mataveli91@gmail.com", "Guilherme Vianna")
        };

        // 自定义邮件内容(不用模板时保留,用模板则设为null)
        var htmlContent = "<html><body><h1>Olá {{params.NOME}}, sua senha é {{params.SENHA}}</h1></body></html>";
        var subject = "Seus dados de acesso";

        // 参数配置:与内容中的变量名严格对应
        var emailParams = new JObject();
        emailParams.Add("NOME", "Guilherme");
        emailParams.Add("SENHA", "Guilherme@123");

        // 可选:抄送/密送配置(不需要可删除)
        var bccList = new List<SendSmtpEmailBcc>
        {
            new SendSmtpEmailBcc("example2@example2.com", "Janice Doe")
        };
        var ccList = new List<SendSmtpEmailCc>
        {
            new SendSmtpEmailCc("example3@example2.com", "John Doe")
        };

        // 回复地址配置
        var replyTo = new SendSmtpEmailReplyTo("replyto@domain.com", "John Doe");

        try
        {
            // 构建邮件请求:二选一——要么用TemplateId,要么用HtmlContent+Subject
            var sendRequest = new SendSmtpEmail(
                sender,
                toList,
                bccList,
                ccList,
                htmlContent, // 使用模板时设为null
                null,
                subject,    // 使用模板时设为null
                replyTo,
                attachments: null, // 无需附件设为null
                headers: null,
                templateId: null,  // 使用后台模板时填对应ID,同时注释HtmlContent和Subject
                emailParams,
                messageVersions: null, // 单收件场景无需此参数
                tags: new List<string>{"mytag"}
            );

            var result = apiInstance.SendTransacEmail(sendRequest);
            Debug.WriteLine(result.ToJson());
            Console.WriteLine(result.ToJson());
        }
        catch (Exception e)
        {
            Debug.WriteLine(e.Message);
            Console.WriteLine(e.Message);
        }
    }
}

补充说明

如果使用后台创建的模板(TemplateId=3),需确保模板内的变量名与代码中emailParams的键完全一致(比如{{params.NOME}}),同时将HtmlContent和Subject设为null,仅保留TemplateId和emailParams即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:55:44