如何用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
相关产品推荐
相关产品推荐

