C#调用Brevo API无法传递自定义属性至邮件模板
解决Brevo邮件模板自定义属性替换无效的问题
针对你用C#调用Brevo发送邮件时,EMPLOYEENAME自定义属性无法替换的问题,按以下步骤排查修复:
1. 核对模板变量与传递参数的大小写及格式
Brevo的模板变量是大小写敏感的,确保:
- 模板中使用的变量是
{{EMPLOYEENAME}}(和你传递的键名完全一致,包括大小写) - 模板里没有多余的空格或特殊字符,比如
{{ EMPLOYEENAME }}(带空格)会导致匹配失败
2. 确认API请求中变量的传递位置正确
在Brevo的Transactional Email API中,自定义模板变量需要放在SendSmtpEmail对象的Params属性中,而非其他字段。示例正确的C#代码结构:
var apiInstance = new TransactionalEmailsApi(); var sendSmtpEmail = new SendSmtpEmail( to: new List<SendSmtpEmailTo> { new SendSmtpEmailTo("recipient@example.com", "Recipient Name") }, templateId: YOUR_TEMPLATE_ID, @params: new Dictionary<string, object> { { "EMPLOYEENAME", "张三" } }, // 变量需放在此处 sender: new SendSmtpEmailSender("sender@example.com", "Sender Name") ); try { CreateSmtpEmail result = apiInstance.SendTransacEmail(sendSmtpEmail); Console.WriteLine(result); } catch (Exception e) { Console.WriteLine("Exception when calling TransactionalEmailsApi.SendTransacEmail: " + e.Message); }
如果你的代码里变量是放在value字典而非Params,会直接导致替换失效。
3. 区分“联系人属性”与“一次性模板变量”
- 若模板中使用的是联系人属性(从Brevo联系人列表拉取的属性),需确保目标联系人的
EMPLOYEENAME属性已正确赋值,且模板绑定的是该联系人属性而非自定义变量。 - 若要发送一次性动态变量(不依赖联系人属性),需在模板构建器中选择“添加变量”而非关联联系人属性,确保变量是独立的模板变量。
4. 验证API请求的实际内容
用调试工具(如Fiddler、Postman)捕获你的C#代码发送的API请求,检查params字段是否包含EMPLOYEENAME及对应值。如果请求中无该参数,说明代码传递方式有误。
5. 检查模板构建器的设置
在Brevo模板构建器中:
- 确认变量是直接插入的模板变量,而非动态内容块的条件变量
- 预览模板时手动填入
EMPLOYEENAME的值,测试是否能正常显示,排除模板本身的问题
内容的提问来源于stack exchange,提问作者Developer
相关产品推荐
相关产品推荐

