SENDGRID:使用 python 使用交易模板发送电子邮件?
SENDGRID: send an email using transactional template using python?
我正在尝试使用交易模板 sendgrid 发送电子邮件。
我可以发送简单的邮件。
from_email = Email("useremail@gmail.com")
subject = "Welcome"
to_email = Email("toemail@gmail.com")
content = ("text/plane","Text here")
mail = Mail(from_email, subject, to_email, content)
我创建了一个模板,我想用它来发送电子邮件。我该怎么做?
我正在使用 template_id 参数并通过 Mail() 传递,但它不起作用。
template_id = "13b8f94f-bcae-4ec6-b752-70d6cb59f932"
我检查了具有 self._template_id 参数的 class Mail(object)。
Mail() class 中的字段如下:
if self.template_id is not None:
mail["template_id"] = self.template_id
我在这里错过了什么?
我只想使用我创建的模板发送邮件。
您不能将其作为参数发送。您可以通过以下方式将其设置为普通 setter。
mail.template_id = "13b8f94f-bcae-4ec6-b752-70d6cb59f932"
您可以在 sendgrid 包的 mail_example.py
文件中找到相同的实现
使用Substitution/Personalization:
#add this code to your method where you have initialized Mail() object
personalization = get_mock_personalization_dict()
mail.add_personalization(build_personalization(personalization))
mail.add_personalization(build_personalization(personalization))
#Example of a Personalization Object
def get_mock_personalization_dict():
mock_pers = dict()
mock_pers['substitutions'] = [Substitution("%name%", "Example User"),
Substitution("%city%", "Denver")]
#Updates the mail object with personalization variable
def build_personalization(personalization):
for substitution in personalization['substitutions']:
personalization.add_substitution(substitution)
如果您使用的是最新的 sendgrid python 库 (~6.1.0),您需要按照他们的 github 自述文件中的文档进行操作。 https://github.com/sendgrid/sendgrid-python/blob/master/use_cases/transactional_templates.md
您需要通过 message.dynamic_template_data in as python dict 传递动态数据。还可以使用来自 sendgrid 邮件助手 class 的 From、To、Subject 对象。
message.dynamic_template_data =
{
'subject': 'Testing Templates',
'name': 'Some One',
'city': 'Denver'
}
这是完整的代码片段..
import os
import json
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail
message = Mail(
from_email='from_email@example.com',
to_emails='to@example.com',
html_content='<strong>and easy to do anywhere, even with Python</strong>') message.dynamic_template_data = {
'subject': 'Testing Templates',
'name': 'Some One',
'city': 'Denver' }
message.template_id = 'd-f43daeeaef504760851f727007e0b5d0'
try:
sendgrid_client = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
response = sendgrid_client.send(message)
print(response.status_code)
print(response.body)
print(response.headers)
except Exception as e:
print(e.message)
我正在尝试使用交易模板 sendgrid 发送电子邮件。
我可以发送简单的邮件。
from_email = Email("useremail@gmail.com")
subject = "Welcome"
to_email = Email("toemail@gmail.com")
content = ("text/plane","Text here")
mail = Mail(from_email, subject, to_email, content)
我创建了一个模板,我想用它来发送电子邮件。我该怎么做?
我正在使用 template_id 参数并通过 Mail() 传递,但它不起作用。
template_id = "13b8f94f-bcae-4ec6-b752-70d6cb59f932"
我检查了具有 self._template_id 参数的 class Mail(object)。 Mail() class 中的字段如下:
if self.template_id is not None:
mail["template_id"] = self.template_id
我在这里错过了什么?
我只想使用我创建的模板发送邮件。
您不能将其作为参数发送。您可以通过以下方式将其设置为普通 setter。
mail.template_id = "13b8f94f-bcae-4ec6-b752-70d6cb59f932"
您可以在 sendgrid 包的 mail_example.py
文件中找到相同的实现
使用Substitution/Personalization:
#add this code to your method where you have initialized Mail() object
personalization = get_mock_personalization_dict()
mail.add_personalization(build_personalization(personalization))
mail.add_personalization(build_personalization(personalization))
#Example of a Personalization Object
def get_mock_personalization_dict():
mock_pers = dict()
mock_pers['substitutions'] = [Substitution("%name%", "Example User"),
Substitution("%city%", "Denver")]
#Updates the mail object with personalization variable
def build_personalization(personalization):
for substitution in personalization['substitutions']:
personalization.add_substitution(substitution)
如果您使用的是最新的 sendgrid python 库 (~6.1.0),您需要按照他们的 github 自述文件中的文档进行操作。 https://github.com/sendgrid/sendgrid-python/blob/master/use_cases/transactional_templates.md
您需要通过 message.dynamic_template_data in as python dict 传递动态数据。还可以使用来自 sendgrid 邮件助手 class 的 From、To、Subject 对象。
message.dynamic_template_data =
{
'subject': 'Testing Templates',
'name': 'Some One',
'city': 'Denver'
}
这是完整的代码片段..
import os
import json
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail
message = Mail(
from_email='from_email@example.com',
to_emails='to@example.com',
html_content='<strong>and easy to do anywhere, even with Python</strong>') message.dynamic_template_data = {
'subject': 'Testing Templates',
'name': 'Some One',
'city': 'Denver' }
message.template_id = 'd-f43daeeaef504760851f727007e0b5d0'
try:
sendgrid_client = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
response = sendgrid_client.send(message)
print(response.status_code)
print(response.body)
print(response.headers)
except Exception as e:
print(e.message)