For this example, we assume you have created a legacy transactional template in the UI or via the API. Following is the template content we used for testing.
Template ID (replace with your own):
13b8f94f-bcae-4ec6-b752-70d6cb59f932
Email Subject:
<%subject%>
Template Body:
<html>
<head>
<title></title>
</head>
<body>
Hello -name-,
<br /><br/>
I'm glad you are trying out the template feature!
<br /><br/>
<%body%>
<br /><br/>
I hope you are having a great day in -city- :)
<br /><br/>
</body>
</html>
import sendgrid
import os
from sendgrid.helpers.mail import Email, Content, Substitution, Mail
try:
# Python 3
import urllib.request as urllib
except ImportError:
# Python 2
import urllib2 as urllib
sg = sendgrid.SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
from_email = Email("[email protected]")
subject = "I'm replacing the subject tag"
to_email = Email("[email protected]")
content = Content("text/html", "I'm replacing the <strong>body tag</strong>")
mail = Mail(from_email, subject, to_email, content)
mail.personalizations[0].add_substitution(Substitution("-name-", "Example User"))
mail.personalizations[0].add_substitution(Substitution("-city-", "Denver"))
mail.template_id = "13b8f94f-bcae-4ec6-b752-70d6cb59f932"
try:
response = sg.client.mail.send.post(request_body=mail.get())
except urllib.HTTPError as e:
print (e.read())
exit()
print(response.status_code)
print(response.body)
print(response.headers)
import sendgrid
import os
try:
# Python 3
import urllib.request as urllib
except ImportError:
# Python 2
import urllib2 as urllib
sg = sendgrid.SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
data = {
"personalizations": [
{
"to": [
{
"email": "[email protected]"
}
],
"substitutions": {
"-name-": "Example User",
"-city-": "Denver"
},
"subject": "I'm replacing the subject tag"
},
],
"from": {
"email": "[email protected]"
},
"content": [
{
"type": "text/html",
"value": "I'm replacing the <strong>body tag</strong>"
}
],
"template_id": "13b8f94f-bcae-4ec6-b752-70d6cb59f932"
}
try:
response = sg.client.mail.send.post(request_body=data)
except urllib.HTTPError as e:
print (e.read())
exit()
print(response.status_code)
print(response.body)
print(response.headers)