如何使用Python与Mailgun(HTTP方法)发定制邮件及模板变量不生效问题
解决方法
1. 修正HTML模板的变量写法
你之前的变量写法有误,Mailgun模板变量规则如下:
- 接口请求中用
v:变量名格式传参是正确的 - 模板内调用变量不需要带
v:前缀,直接用{{变量名}}包裹即可 - 放在HTML属性(比如
href、src)中的变量,需要在变量名前加%避免转义,格式为{{%变量名}}
修正后的模板代码如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>repl.it</title> <link href="style.css" rel="stylesheet" type="text/css" /> </head> <body> <h3>{{name}}</h3> <a href="{{%this_link}}"> link</a> </body> </html>
2. 可选优化:用JSON格式传变量
如果变量较多,也可以改用X-Mailgun-Variables头传JSON格式的参数,写法更清晰,示例代码如下:
import requests import json def send_simple_message(): return requests.post( "https://api.mailgun.net/v3/sandbox<...>.mailgun.org/messages", auth=("api", "API-KEY"), data={ "from": "SENDER", "to": "RECEIVER", "subject": "test email ", "template": "TEST" }, headers={ "X-Mailgun-Variables": json.dumps({ "name": "the user name ", "this_link": "https://google.com" }) }) send_simple_message()
这种方式传的变量在模板里同样用{{变量名}}调用即可。
3. 验证检查项
- 确认你在Mailgun后台创建的
TEST模板已经发布激活,草稿状态的模板不会生效 - 确认模板名称和请求中
template参数的拼写完全一致,区分大小写
内容的提问来源于stack exchange,提问作者max.syntax
相关产品推荐
相关产品推荐

