AWS SESv2:使用模板数据的联系人属性

问题描述 投票:0回答:1

我有一个联系人列表,每个联系人都有“姓名”属性,例如:

{
    "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 中的问题

amazon-web-services boto3 amazon-ses
1个回答
0
投票

如何让它使用联系人的属性数据? (请注意,向许多用户发送批量电子邮件时,为每个联系人调用 get_contact 会花费太长时间)

我认为你做不到。很高兴犯错并学习其他方法。

联系人和列表主要用于订阅管理。您可以存储联系人的联系人属性(免费),但是,正如您所提到的,检索它们的唯一选择是循环调用

GetContact
(也是免费的)。如果您的应用程序托管在 AWS 上,那么这应该不是什么大问题,因为您可以并行化调用(并且可能设置到 SES 的 PrivateLink)。

如果您的应用程序托管在 AWS 外部,那么往返确实可能会成为问题。在这种情况下,您最好在另一个商店中维护您的联系人属性,这将允许您在一次调用中传递一批密钥并检索一批值。

© www.soinside.com 2019 - 2024. All rights reserved.