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

如何通过SendinBlue SMTP API调用指定事务邮件模板?

解决SendinBlue调用指定事务邮件模板的问题

你当前的代码已经定义了模板ID的映射,但没有将其关联到实际API调用中。要调用SendinBlue平台创建好的模板,需要在SendSmtpEmail对象中指定template_id参数,同时移除硬编码的html_content和subject(模板本身已包含这些内容,除非你需要动态覆盖)。

修改后的完整代码

from __future__ import print_function
import sib_api_v3_sdk
from sib_api_v3_sdk.rest import ApiException
from pprint import pprint
from flask import request, render_template
from sql_helper import *

# 配置API密钥
api_config = sib_api_v3_sdk.Configuration()
api_config.api_key['api-key'] = '你的API密钥'

# 初始化API实例
api_instance = sib_api_v3_sdk.TransactionalEmailsApi(sib_api_v3_sdk.ApiClient(api_config))

# 基础发送配置(可根据需求调整)
sender = {"name":"公司名称","email":"admin@company.com"}
reply_to = {"email":"admin@company.com","name":"John Doe"}
headers = {"Some-Custom-Name":"unique-id-1234"}

def send_email(template, recipient, custom_params=None):
    # 映射模板名称到平台上的模板ID
    template_map = {
        "approve": 1,
        "deny": 2,
        "skip": 3
    }
    template_id = template_map.get(template)
    if not template_id:
        print(f"无效的模板名称: {template}")
        return
    
    # 构建收件人列表
    to = [{"email": recipient["email"], "name": recipient["name"]}]
    
    # 模板变量(如果你的模板中有动态字段,比如{{name}}、{{message}}等,在这里传入)
    params = custom_params or {}
    
    # 创建邮件对象,指定模板ID
    send_smtp_email = sib_api_v3_sdk.SendSmtpEmail(
        to=to,
        reply_to=reply_to,
        headers=headers,
        sender=sender,
        template_id=template_id,  # 关键:指定模板ID
        params=params  # 传递模板中的动态变量
    )
    
    try:
        # 发送邮件
        api_response = api_instance.send_transac_email(send_smtp_email)
        pprint(api_response)
        print("邮件发送成功")
    except ApiException as e:
        print(f"调用API时出错: {e}\n")

# 示例调用:发送approve模板给指定收件人
if __name__ == "__main__":
    test_recipient = {"email":"example@example.com","name":"Jane Doe"}
    # 如果模板中有动态变量,比如{{custom_message}},可以传入参数
    send_email("approve", test_recipient, {"custom_message": "你的申请已通过"})

关键修改说明

  • 指定模板ID:在SendSmtpEmail中添加template_id参数,对应你在SendinBlue平台创建的模板ID(确保ID和平台上的一致)
  • 移除冗余参数:不再需要html_content和subject,因为模板已经包含这些内容;如果需要动态覆盖模板主题,可以保留subject参数
  • 完善send_email函数:让函数接收模板名称、收件人信息和自定义参数,内部完成邮件对象构建和发送逻辑
  • 模板变量传递:通过params参数传递模板中的动态占位符(比如模板里的{{user_name}},就可以在params中传入{"user_name": "张三"})

注意事项

  1. 确保你的API密钥有足够的权限发送事务邮件
  2. 确认模板ID和平台上创建的模板完全匹配(可以在SendinBlue后台的模板列表中查看ID)
  3. 如果模板中有必填的动态变量,必须在params中传入对应的键值对,否则邮件可能无法正常渲染

内容的提问来源于stack exchange,提问作者Abdeali Diwan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:21:02