()
| 268 | |
| 269 | # snippet-start:[python.example_code.ses.Scenario_ReceiptRulesFilters] |
| 270 | def usage_demo(): |
| 271 | print("-" * 88) |
| 272 | print( |
| 273 | "Welcome to the Amazon Simple Email Service (Amazon SES) receipt rules " |
| 274 | "and filters demo!" |
| 275 | ) |
| 276 | print("-" * 88) |
| 277 | |
| 278 | logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") |
| 279 | |
| 280 | ses_receipt = SesReceiptHandler(boto3.client("ses"), boto3.resource("s3")) |
| 281 | filter_name = "block-self" |
| 282 | rule_set_name = "doc-example-rule-set" |
| 283 | rule_name = "copy-mail-to-bucket" |
| 284 | email = "example@example.org" |
| 285 | bucket_name = f"amzn-s3-demo-bucket-{time.time_ns()}" |
| 286 | prefix = "example-emails/" |
| 287 | |
| 288 | current_ip_address = ( |
| 289 | request.urlopen("http://checkip.amazonaws.com").read().decode("utf-8").strip() |
| 290 | ) |
| 291 | print( |
| 292 | f"Adding a filter to block email from the current IP address " |
| 293 | f"{current_ip_address}." |
| 294 | ) |
| 295 | ses_receipt.create_receipt_filter(filter_name, current_ip_address, False) |
| 296 | filters = ses_receipt.list_receipt_filters() |
| 297 | print("Current filters now in effect are:") |
| 298 | print(*filters, sep="\n") |
| 299 | print("Removing filter.") |
| 300 | ses_receipt.delete_receipt_filter(filter_name) |
| 301 | |
| 302 | print( |
| 303 | f"Creating a rule set and adding a rule to copy all emails received by " |
| 304 | f"{email} to Amazon S3 bucket {bucket_name}." |
| 305 | ) |
| 306 | print(f"Creating bucket {bucket_name} to hold emails.") |
| 307 | bucket = ses_receipt.create_bucket_for_copy(bucket_name) |
| 308 | ses_receipt.create_receipt_rule_set(rule_set_name) |
| 309 | ses_receipt.create_s3_copy_rule( |
| 310 | rule_set_name, rule_name, [email], bucket.name, prefix |
| 311 | ) |
| 312 | rule_set = ses_receipt.describe_receipt_rule_set(rule_set_name) |
| 313 | print(f"Rule set {rule_set_name} looks like this:") |
| 314 | pprint(rule_set) |
| 315 | print(f"Deleting rule {rule_name} and rule set {rule_set_name}.") |
| 316 | ses_receipt.delete_receipt_rule(rule_set_name, rule_name) |
| 317 | ses_receipt.delete_receipt_rule_set(rule_set_name) |
| 318 | print(f"Emptying and deleting bucket {bucket_name}.") |
| 319 | bucket.objects.delete() |
| 320 | bucket.delete() |
| 321 | |
| 322 | print("Thanks for watching!") |
| 323 | print("-" * 88) |
| 324 | |
| 325 | |
| 326 | # snippet-end:[python.example_code.ses.Scenario_ReceiptRulesFilters] |
no test coverage detected