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

如何用Python通过SendGrid事务性模板发邮件?Template ID传入无效问题

解决SendGrid事务性模板邮件发送问题

嘿,我来帮你搞定这个问题!你遇到的情况是因为Mail类的构造函数并没有直接把template_id作为初始化参数,所以直接在Mail()里传这个参数不会被识别。不过别担心,按照下面的步骤来就能轻松解决:

方法一:创建Mail对象后手动设置template_id

这是最直接有效的方式,先完成基础的Mail对象创建,再给它赋值template_id:

from sendgrid.helpers.mail import Mail, Email

# 基础邮件配置
from_email = Email("useremail@gmail.com")
subject = "Welcome"
to_email = Email("toemail@gmail.com")
# 提示:使用模板时,content可以省略(模板内容会自动覆盖),如果保留也不影响发送
content = ("text/plain", "Text here")

# 创建基础Mail对象
mail = Mail(from_email, subject, to_email, content)
# 关键步骤:手动给Mail对象设置模板ID
mail.template_id = "13b8f94f-bcae-4ec6-b752-70d6cb59f932"

# 补充发送邮件的代码(你之前可能没写这部分)
import sendgrid
sg = sendgrid.SendGridAPIClient(api_key='你的SendGrid API密钥')
response = sg.send(mail)

方法二:通过关键字参数初始化(适配新版SDK)

如果你的SendGrid Python SDK是较新版本,也可以直接在初始化Mail时用关键字参数传入template_id:

mail = Mail(
    from_email=from_email,
    subject=subject,
    to_email=to_email,
    content=content,
    template_id="13b8f94f-bcae-4ec6-b752-70d6cb59f932"
)

额外注意事项

  • 确保你的模板已经激活:在SendGrid控制台中,模板必须处于「Active」状态才能被正常调用。
  • 如果模板包含动态变量,需要添加dynamic_template_data传递变量值,比如:
    mail.dynamic_template_data = {
        "username": "John Doe",
        "welcome_msg": "很高兴你能加入我们!"
    }
    
  • 使用模板时,subject参数会被模板内设置的主题覆盖,所以如果模板已经定义了主题,这里可以省略subject参数。

这样设置之后,你的邮件就会成功使用指定的事务性模板发送啦!

内容的提问来源于stack exchange,提问作者Ajay Shewale

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:50:20