List Management - 列表管理

List management功能将允许我们管理邮件列表,创建具有各种主题的联系人列表,并向订阅者发送电子邮件。

此功能只能使用SES API,而不能在Amazon SES控制台中完成。

创建Contact list

创建一个名为contact-list.json的JSON文件,内容如下:

{
  "ContactListName": "AWSomeNewsletterContactList",
  "Description": "Contact list for AWSomeNewsletter subscribers",
  "Topics": [
    {
      "TopicName": "TechNews",
      "DisplayName": "Latest Technology News",
      "Description": "Stay up-to-date with the latest technology trends, gadgets, and industry news.",
      "DefaultSubscriptionStatus": "OPT_IN"
    },
    {
      "TopicName": "HealthWellness",
      "DisplayName": "Health and Wellness Tips",
      "Description": "Get insights into maintaining a healthy lifestyle, nutrition advice, and mental wellness tips.",
      "DefaultSubscriptionStatus": "OPT_IN"
    },
    {
      "TopicName": "TravelTips",
      "DisplayName": "Smart Travel Tips",
      "Description": "Discover travel hacks, destination recommendations, and packing tips for your next adventure.",
      "DefaultSubscriptionStatus": "OPT_IN"
    },
    {
      "TopicName": "PersonalFinance",
      "DisplayName": "Money Management Tips",
      "Description": "Learn about budgeting, saving, investing, and making smart financial decisions.",
      "DefaultSubscriptionStatus": "OPT_IN"
    }
  ]
}

运行以下AWS CLI命令创建联系人列表:

aws sesv2 create-contact-list --cli-input-json file://contact-list.json

将联系人添加到Contact list

创建一个名为contact.json的JSON文件,内容如下。将example@amazon.com替换为我们第一个订阅者的电子邮件地址:

{
  "ContactListName": "AWSomeNewsletterContactList",
  "EmailAddress": "example@amazon.com",
  "UnsubscribeAll": false,
  "TopicPreferences": [
    {
      "TopicName": "TechNews",
      "SubscriptionStatus": "OPT_IN"
    }
  ],
  "AttributesData": "{\"firstName\": \"Jane\",\"lastName\": \"Doe\",\"city\": \"Singapore\",\"postalCode\": \"123456\"}"
}
  • 在上面的示例中,UnsubscribeAll值为false,表示联系人未退订所有主题,而值为true则表示联系人已退订所有主题。

  • TopicPreferences包括有关联系人对主题的订阅状态的信息。联系人选择加入TechNews主题,并将收到该主题的所有电子邮件。

  • AttributesData是一个JSON字段,我们可以在其中放置有关联系人的任何元数据。它必须是有效的JSON对象。

运行以下命令:

aws sesv2 create-contact --cli-input-json file://contact.json

此命令将在contact.json文件中指定的联系人添加到文件中提到的contact list。

批量添加

上面的方式一次只能添加一个联系人,也可以采用批量添加的方式

我们可以使用CSV或JSON格式。创建一个名为contacts.json的JSON文件,内容如下。将电子邮件地址替换为我们的订阅者的电子邮件地址,并更新他们的主题偏好:

{
  "EmailAddress": "example1@amazon.com",
  "UnsubscribeAll": false,
  "AttributesData": "{\"firstName\": \"Jane\",\"lastName\": \"Doe\",\"city\": \"NYC\",\"postalCode\": \"111111\"}",
  "TopicPreferences": [
    {
      "TopicName": "TechNews",
      "SubscriptionStatus": "OPT_IN"
    },
    {
      "TopicName": "HealthWellness",
      "SubscriptionStatus": "OPT_OUT"
    },
    {
      "TopicName": "TravelTips",
      "SubscriptionStatus": "OPT_OUT"
    },
    {
      "TopicName": "PersonalFinance",
      "SubscriptionStatus": "OPT_OUT"
    }
  ]
}
{
  "EmailAddress": "example2@amazon.com",
  "UnsubscribeAll": true,
  "AttributesData": "{\"firstName\": \"John\",\"lastName\": \"Doe\",\"city\": \"Seattle\",\"postalCode\": \"123123\"}",
  "TopicPreferences": [
    {
      "TopicName": "TechNews",
      "SubscriptionStatus": "OPT_OUT"
    },
    {
      "TopicName": "HealthWellness",
      "SubscriptionStatus": "OPT_OUT"
    },
    {
      "TopicName": "TravelTips",
      "SubscriptionStatus": "OPT_IN"
    },
    {
      "TopicName": "PersonalFinance",
      "SubscriptionStatus": "OPT_IN"
    }
  ]
}

使用AWS CLI将联系人文件上传到Amazon S3存储桶:

aws s3 cp contacts.json s3://your-bucket-name/contacts.json

your-bucket-name替换为我们的S3存储桶名称。

我们需要创建一个Amazon SES身份策略,授予Amazon SES从我们的S3存储桶读取对象的权限。创建一个名为ses-s3-policy.json的文件,内容如下:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ses.amazonaws.com"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::your-bucket-name/*"
    }
  ]
}

将策略应用到我们的S3存储桶:

aws s3api put-bucket-policy --bucket your-bucket-name --policy file://ses-s3-policy.json

your-bucket-name替换为我们的S3存储桶名称。

使用AWS CLI启动导入作业:

aws sesv2 create-import-job --import-destination '{
  "ContactListDestination": {
    "ContactListName": "AWSomeNewsletter",
    "ContactListImportAction": "PUT"
  }
}' --import-data-source '{
  "S3Url": "s3://your-bucket-name/contacts.json",
  "DataFormat": "JSON"
}'

your-bucket-name替换为我们的存储桶名称。

验证Contact List中的联系人

要验证联系人是否已添加到Contact list,运行:

aws sesv2 list-contacts --contact-list-name "AWSomeNewsletterContactList" --page-size 10

我们应该会以JSON格式看到我们在前面步骤中添加的联系人列表,以及他们的主题订阅偏好。

image-20240721132337210

从联系人列表中删除联系人

要从列表中删除联系人,请运行:

aws sesv2 delete-contact --contact-list-name "AWSomeNewsletterContactList" --email-address "ContactEmailAddress"

同样,我们也可以通过在JSON文件中指定他们的电子邮件地址来批量删除联系人。我们将使用"ContactListImportAction": "DELETE"而不是"ContactListImportAction": "PUT"

通过遵循这些步骤,我们可以轻松管理邮件列表,创建具有各种主题的联系人列表,并向订阅者发送电子邮件。使用Amazon SES API v2,我们可以简化电子邮件营销和通信工作,以相关的信息向受众发送有针对性的消息。