{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":53549881,"defaultBranch":"main","name":"django-anymail","ownerLogin":"anymail","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2016-03-10T02:55:09.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/17517617?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1725910172.0","currentOid":""},"activityList":{"items":[{"before":"063fb08a588de7432107c640e9030b457ded7df7","after":"35383c7140289e82b39ada5980077898aa07d18d","ref":"refs/heads/main","pushedAt":"2024-09-09T19:26:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"Release 12.0","shortMessageHtmlLink":"Release 12.0"}},{"before":"063fb08a588de7432107c640e9030b457ded7df7","after":null,"ref":"refs/heads/feature/amazon-ses-webhook-extensions","pushedAt":"2024-09-09T18:42:07.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"}},{"before":"1da9011f50e9e3c178d7958a1ff21f8b73b2f797","after":"063fb08a588de7432107c640e9030b457ded7df7","ref":"refs/heads/main","pushedAt":"2024-09-09T18:42:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"Amazon SES: add webhook extension points; close webhook boto3 clients\n\nIn Amazon SES webhook views (tracking and inbound):\n- Close boto3 clients after use. (Not strictly required, but doesn't hurt.\n Amazon SES backend was already doing this.)\n- Break out some webhook functionality to simplify subclassing.\n (E.g., to handle S3 object encryption through outside tooling, as\n AWS hasn't released a Python version of their S3 encryption client.)","shortMessageHtmlLink":"Amazon SES: add webhook extension points; close webhook boto3 clients"}},{"before":null,"after":"063fb08a588de7432107c640e9030b457ded7df7","ref":"refs/heads/feature/amazon-ses-webhook-extensions","pushedAt":"2024-09-09T18:34:59.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"Amazon SES: add webhook extension points; close webhook boto3 clients\n\nIn Amazon SES webhook views (tracking and inbound):\n- Close boto3 clients after use. (Not strictly required, but doesn't hurt.\n Amazon SES backend was already doing this.)\n- Break out some webhook functionality to simplify subclassing.\n (E.g., to handle S3 object encryption through outside tooling, as\n AWS hasn't released a Python version of their S3 encryption client.)","shortMessageHtmlLink":"Amazon SES: add webhook extension points; close webhook boto3 clients"}},{"before":"e4331d224955a7df8b09063f639304d58163660a","after":null,"ref":"refs/heads/fix/unisender-go-webhook","pushedAt":"2024-09-08T23:34:37.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"}},{"before":"c4b2e08b1688da09dec6da9c4fea509672878a13","after":null,"ref":"refs/heads/fix/sparkpost-template-limitations","pushedAt":"2024-09-08T23:34:36.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"}},{"before":"faf98c22d73d82f6e35395f04e77a096401ae2ba","after":null,"ref":"refs/heads/feature/mailersend-headers","pushedAt":"2024-09-08T23:34:35.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"}},{"before":"bd6761556327e7c845d11057a490b1272d075daa","after":null,"ref":"refs/heads/feature/merge-headers","pushedAt":"2024-09-08T23:34:33.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"}},{"before":"1da9011f50e9e3c178d7958a1ff21f8b73b2f797","after":null,"ref":"refs/heads/chore/version-updates","pushedAt":"2024-09-08T23:33:46.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"}},{"before":"e4331d224955a7df8b09063f639304d58163660a","after":"1da9011f50e9e3c178d7958a1ff21f8b73b2f797","ref":"refs/heads/main","pushedAt":"2024-09-08T23:33:41.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"CI/CD: use Python 3.12 by default\n\nFor CI/CD tasks not testing a specific Python version, switch to Python 3.12.\n(Had been using mixture of 3.10 and 3.11. GitHub's ubuntu-22.04 runner has\nPython 3.10 installed by default, but 3.12 should be in the tool cache.)","shortMessageHtmlLink":"CI/CD: use Python 3.12 by default"}},{"before":null,"after":"1da9011f50e9e3c178d7958a1ff21f8b73b2f797","ref":"refs/heads/chore/version-updates","pushedAt":"2024-09-08T23:20:24.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"CI/CD: use Python 3.12 by default\n\nFor CI/CD tasks not testing a specific Python version, switch to Python 3.12.\n(Had been using mixture of 3.10 and 3.11. GitHub's ubuntu-22.04 runner has\nPython 3.10 installed by default, but 3.12 should be in the tool cache.)","shortMessageHtmlLink":"CI/CD: use Python 3.12 by default"}},{"before":"2f2a888f610ec37577ecbcad92959ef89fa0fe16","after":"e4331d224955a7df8b09063f639304d58163660a","ref":"refs/heads/main","pushedAt":"2024-09-08T22:34:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"Unisender Go: Fix status tracking webhook and tests.\n\n- Fix signature checking to avoid false validation errors\n on webhook payloads including `/` (including all \"clicked\"\n and most \"opened\" events). And in general, avoid depending\n on specific details of Unisender Go's JSON serialization.\n (Fixes #398.)\n- Handle \"use single event\" webhook option (which has a different\n payload format).\n- Verify basic auth when Anymail's WEBHOOK_SECRET is used.\n (This is optional for Unisender Go, since payloads are signed,\n but it needs to be checked when enabled.)\n- Treat \"soft_bounced\" events as \"deferred\" rather than \"bounced\",\n since they will be retried later.\n- Update validation error to reference Project ID if the webhook\n is configured for a specific project.\n- Expose Unisender Go's delivery_status code and unsubscribe form\n comment as Anymail's normalized event.description.\n- Update webhook tests based on actual payloads and add several\n missing tests.\n- Update docs to clarify webhook use with Unisender Go projects.","shortMessageHtmlLink":"Unisender Go: Fix status tracking webhook and tests."}},{"before":null,"after":"e4331d224955a7df8b09063f639304d58163660a","ref":"refs/heads/fix/unisender-go-webhook","pushedAt":"2024-09-08T22:27:57.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"Unisender Go: Fix status tracking webhook and tests.\n\n- Fix signature checking to avoid false validation errors\n on webhook payloads including `/` (including all \"clicked\"\n and most \"opened\" events). And in general, avoid depending\n on specific details of Unisender Go's JSON serialization.\n (Fixes #398.)\n- Handle \"use single event\" webhook option (which has a different\n payload format).\n- Verify basic auth when Anymail's WEBHOOK_SECRET is used.\n (This is optional for Unisender Go, since payloads are signed,\n but it needs to be checked when enabled.)\n- Treat \"soft_bounced\" events as \"deferred\" rather than \"bounced\",\n since they will be retried later.\n- Update validation error to reference Project ID if the webhook\n is configured for a specific project.\n- Expose Unisender Go's delivery_status code and unsubscribe form\n comment as Anymail's normalized event.description.\n- Update webhook tests based on actual payloads and add several\n missing tests.\n- Update docs to clarify webhook use with Unisender Go projects.","shortMessageHtmlLink":"Unisender Go: Fix status tracking webhook and tests."}},{"before":"2f2a888f610ec37577ecbcad92959ef89fa0fe16","after":null,"ref":"refs/heads/feature/resend-send-at","pushedAt":"2024-09-06T18:40:06.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"}},{"before":"af6eaea5657ff2a0d51f36f742c61b1785b9b63e","after":"2f2a888f610ec37577ecbcad92959ef89fa0fe16","ref":"refs/heads/main","pushedAt":"2024-09-06T18:40:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"Resend: add support for send_at\n\nResend's new `scheduled_at` API field allows delayed sending\n(though not with attachments or batch sending).\n\nCloses #396.","shortMessageHtmlLink":"Resend: add support for send_at"}},{"before":"f1d9e27c15820fdcc44f6b4cba6722f99d2e5261","after":"2f2a888f610ec37577ecbcad92959ef89fa0fe16","ref":"refs/heads/feature/resend-send-at","pushedAt":"2024-09-06T18:36:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"Resend: add support for send_at\n\nResend's new `scheduled_at` API field allows delayed sending\n(though not with attachments or batch sending).\n\nCloses #396.","shortMessageHtmlLink":"Resend: add support for send_at"}},{"before":null,"after":"f1d9e27c15820fdcc44f6b4cba6722f99d2e5261","ref":"refs/heads/feature/resend-send-at","pushedAt":"2024-09-06T18:29:41.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"Resend: add support for send_at\n\nResend's new `scheduled_at` API field allows delayed sending.\n\nFixes #396.","shortMessageHtmlLink":"Resend: add support for send_at"}},{"before":"03f5fb7641c3c13eba7b3dd471f768c4b39fbbe4","after":"af6eaea5657ff2a0d51f36f742c61b1785b9b63e","ref":"refs/heads/main","pushedAt":"2024-09-06T17:45:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"Docs: Note Mandrill's cc/bcc handling depends on preserve_recipients\n\nCloses #391","shortMessageHtmlLink":"Docs: Note Mandrill's cc/bcc handling depends on preserve_recipients"}},{"before":"397dcf5f8a6dcbdf84c0e769919a531559c3658e","after":"03f5fb7641c3c13eba7b3dd471f768c4b39fbbe4","ref":"refs/heads/main","pushedAt":"2024-09-06T16:55:43.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"Docs: Update outdated Postal links","shortMessageHtmlLink":"Docs: Update outdated Postal links"}},{"before":"397dcf5f8a6dcbdf84c0e769919a531559c3658e","after":null,"ref":"refs/heads/chore/docs-build-updates","pushedAt":"2024-09-03T00:46:10.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"}},{"before":"9d4fb5daf9f1799440adb16dbd294d1dc11d8a3b","after":"397dcf5f8a6dcbdf84c0e769919a531559c3658e","ref":"refs/heads/main","pushedAt":"2024-09-03T00:45:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"Docs: prep for upcoming RTD build changes\n\nRead the Docs is changing their build process. Some docs/conf.py\nmanipulation they used to do automatically now must be manually\nincluded.\n\nhttps://about.readthedocs.com/blog/2024/07/addons-by-default/\n\nRelated changes:\n\n* Drop our version-alert.js. RTD's new \"addons\" includes\n equivalent warning on unreleased versions.\n\n* Integrate Google Analytics via sphinxcontrib-googleanalytics\n when GOOGLE_ANALYTICS_ID is set in docs build environment.","shortMessageHtmlLink":"Docs: prep for upcoming RTD build changes"}},{"before":"4374045821f2b0d14b155d8af3cd2b614b434777","after":"397dcf5f8a6dcbdf84c0e769919a531559c3658e","ref":"refs/heads/chore/docs-build-updates","pushedAt":"2024-09-02T20:35:41.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"Docs: prep for upcoming RTD build changes\n\nRead the Docs is changing their build process. Some docs/conf.py\nmanipulation they used to do automatically now must be manually\nincluded.\n\nhttps://about.readthedocs.com/blog/2024/07/addons-by-default/\n\nRelated changes:\n\n* Drop our version-alert.js. RTD's new \"addons\" includes\n equivalent warning on unreleased versions.\n\n* Integrate Google Analytics via sphinxcontrib-googleanalytics\n when GOOGLE_ANALYTICS_ID is set in docs build environment.","shortMessageHtmlLink":"Docs: prep for upcoming RTD build changes"}},{"before":"e41aceda13308ac6d6c16ea8a4f3f5b5cb13cb64","after":"4374045821f2b0d14b155d8af3cd2b614b434777","ref":"refs/heads/chore/docs-build-updates","pushedAt":"2024-09-02T19:53:51.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"Docs: prep for upcoming RTD build changes\n\nRead the Docs is changing their build process. Some docs/conf.py\nmanipulation they used to do automatically now must be manually\nincluded.\n\nhttps://about.readthedocs.com/blog/2024/07/addons-by-default/\n\nRelated changes:\n\n* Drop our version-alert.js. RTD's new \"addons\" includes\n equivalent warning on unreleased versions.\n\n* Integrate Google Analytics via sphinxcontrib-googleanalytics\n when GOOGLE_ANALYTICS_ID is set in docs build environment.","shortMessageHtmlLink":"Docs: prep for upcoming RTD build changes"}},{"before":null,"after":"e41aceda13308ac6d6c16ea8a4f3f5b5cb13cb64","ref":"refs/heads/chore/docs-build-updates","pushedAt":"2024-08-28T20:21:06.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"Docs: prep for upcoming RTD build changes\n\nRead the Docs is changing their build process. Some docs/conf.py\nmanipulation they used to do automatically now must be manually\nincluded.\n\nhttps://about.readthedocs.com/blog/2024/07/addons-by-default/","shortMessageHtmlLink":"Docs: prep for upcoming RTD build changes"}},{"before":"7779920e9bab28bd7d6d314db9ab69c22ebf8417","after":"9d4fb5daf9f1799440adb16dbd294d1dc11d8a3b","ref":"refs/heads/main","pushedAt":"2024-08-07T22:05:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"Docs: clarify use of Mailgun's inbound \"raw MIME\" option\n\nRefs #389","shortMessageHtmlLink":"Docs: clarify use of Mailgun's inbound \"raw MIME\" option"}},{"before":"7779920e9bab28bd7d6d314db9ab69c22ebf8417","after":null,"ref":"refs/heads/chore/drop-deprecated-versions","pushedAt":"2024-08-07T21:13:29.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"}},{"before":"6cb1a8b4e94af86c8ce2cf6099a1f742e3732560","after":"7779920e9bab28bd7d6d314db9ab69c22ebf8417","ref":"refs/heads/main","pushedAt":"2024-08-07T21:12:36.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"Tests: fix Python 3.13 email.utils.make_msgid mocking\n\nPython 3.13 changes where email.utils imports socket for make_msgid.","shortMessageHtmlLink":"Tests: fix Python 3.13 email.utils.make_msgid mocking"}},{"before":"ae6d730c461289fe5b3b8d1915368c51e44360bd","after":"7779920e9bab28bd7d6d314db9ab69c22ebf8417","ref":"refs/heads/chore/drop-deprecated-versions","pushedAt":"2024-08-07T21:08:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"Tests: fix Python 3.13 email.utils.make_msgid mocking\n\nPython 3.13 changes where email.utils imports socket for make_msgid.","shortMessageHtmlLink":"Tests: fix Python 3.13 email.utils.make_msgid mocking"}},{"before":null,"after":"ae6d730c461289fe5b3b8d1915368c51e44360bd","ref":"refs/heads/chore/drop-deprecated-versions","pushedAt":"2024-08-07T20:27:59.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"Upgrade pre-commit tools; Update black and isort to Python 3.8 profiles","shortMessageHtmlLink":"Upgrade pre-commit tools; Update black and isort to Python 3.8 profiles"}},{"before":"13fa505257713c3e8207d034f710f30f52731f2a","after":"6cb1a8b4e94af86c8ce2cf6099a1f742e3732560","ref":"refs/heads/main","pushedAt":"2024-08-07T19:37:41.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"medmunds","name":"Mike Edmunds","path":"/medmunds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/639984?s=80&v=4"},"commit":{"message":"Release 11.1","shortMessageHtmlLink":"Release 11.1"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEsUetowA","startCursor":null,"endCursor":null}},"title":"Activity ยท anymail/django-anymail"}