我有一个联系人列表,每个联系人都有“姓名”属性,例如:
{
"ContactListName": "myusers",
"EmailAddress": "[email protected]",
"UnsubscribeAll": false,
"TopicPreferences": [
{
"TopicName": "Announcements",
"SubscriptionStatus": "OPT_IN"
}
],
"AttributesData": "{\"Name\": \"John\"}"
}
我想向所有对特定主题感兴趣的客户发送电子邮件。该电子邮件基于以“亲爱的{{Name}}”开头的模板。我希望将
{{Name}}
替换为每个联系人 AttributesData
中的姓名。
我可以使用 list_contacts 获取对该主题感兴趣的联系人列表。但是,回复不包含
AttributeData
,所以我必须像这样发送电子邮件:
response = ses_client.send_bulk_email(
FromEmailAddress='[email protected]',
ReplyToAddresses=[
'[email protected]',
],
DefaultContent={
'Template': {
'TemplateName': 'mytemplate',
'TemplateData': '{"Name":"Unknown"}'
}
},
BulkEmailEntries=[
{
'Destination': {
'ToAddresses': [
'[email protected]',
],
},
'ReplacementEmailContent': {
'ReplacementTemplate': {
'ReplacementTemplateData': '{"Name":"John"}'
}
}
},
],
)
如果我跳过
ReplacementEmailContent
键,模板中的 {{Name}}
将替换为“未知”。如何让它使用联系人的属性数据? (请注意,向许多用户发送批量电子邮件时,为每个联系人调用 get_contact
会花费太长时间)
附注re:Post 中的问题
如何让它使用联系人的属性数据? (请注意,向许多用户发送批量电子邮件时,为每个联系人调用 get_contact 会花费太长时间)
我认为你做不到。很高兴犯错并学习其他方法。
联系人和列表主要用于订阅管理。您可以存储联系人的联系人属性(免费),但是,正如您所提到的,检索它们的唯一选择是循环调用
GetContact
(也是免费的)。如果您的应用程序托管在 AWS 上,那么这应该不是什么大问题,因为您可以并行化调用(并且可能设置到 SES 的 PrivateLink)。
如果您的应用程序托管在 AWS 外部,那么往返确实可能会成为问题。在这种情况下,您最好在另一个商店中维护您的联系人属性,这将允许您在一次调用中传递一批密钥并检索一批值。