Commit Graph

916 Commits

Author SHA1 Message Date
Therry van Neerven
885eb9b98a Postmark: workaround invalid "test inbound" data
Postmark's "test" button in their inbound settings
posts data with attachments that don't match their docs or
actual inbound behavior. Accept that and issue a warning.

Closes #304
2023-04-22 12:00:05 -07:00
Mike Edmunds
d9a80e7347 Tests: Test release version of Django 4.2 2023-04-03 12:18:34 -07:00
Mike Edmunds
c59ad9e7a1 Release 9.1 2023-03-11 11:44:02 -08:00
Mike Edmunds
62bd0669af MailerSend: add support (new ESP for Anymail)
Closes #298
2023-03-10 17:22:20 -08:00
Mike Edmunds
c58640d438 Mandrill: update integration test
Mandrill bad API key can respond either 401 or 500,
so don't bother checking exact status code. 
(Just make sure it results in a useful error.)
2023-03-09 09:56:42 -08:00
Mike Edmunds
ea446a94d3 Amazon SES: implement SES v2 API backend
* Add `anymail.backends.amazon_sesv2.EmailBackend` using SES v2 API
* Declare current SES v1 backend as "deprecated"

Closes #274
2023-02-26 14:16:46 -08:00
medmunds
67b19678d2 Tests: Django 5.0 dev requires Python 3.10+ 2023-02-08 14:41:50 -08:00
medmunds
f5f3fc86e6 Simplify url patterns
Favor `django.urls.path` over `re_path` where possible.
2023-02-08 14:23:15 -08:00
medmunds
4e3e76f997 Docs: add help link to readme 2023-02-08 13:49:39 -08:00
medmunds
b84435d7f6 CI: update job output mechanism
GH workflow changed job outputs from `echo ::set-output`
to appending to `$GITHUB_OUTPUT` file.

tox-gh-matrix 0.2.0 supports new mechanism
2023-02-08 13:15:41 -08:00
medmunds
39e822321f Docs: update readthedocs.yml config
Move deprecated python.version to build.tools.python,
use latest stable Python 3 (rather than pinning 3.7).
2023-02-08 13:15:41 -08:00
medmunds
353e793323 Docs: update absolute links to anymail.dev
Canonical hosting for docs moved from anymail.readthedocs.io
to anymail.dev in May 2022.
2023-02-08 11:25:11 -08:00
medmunds
b1f49b8870 Tests: test Django 4.2-alpha, Python 3.11, PyPy 3.9 2023-02-08 11:05:18 -08:00
medmunds
ec864f5165 Tests: simplify test_settings maintenance
If no version-specific tests.test_settings.settings* file
exists for the current Django version, fall back to an
earlier settings file.

- runtests.py find latest settings_N_M earlier than or
  matching Django version N.M being tested, rather than
  requiring exact match
- remove test_settings files that were just duplicates
  of earlier versions
2023-02-08 11:03:06 -08:00
medmunds
f71813f820 Fix Sendinblue integration test
Fix change apparently introduced by black?
(Unclear why this didn't cause integration test failure
when run in PR branch.)
2023-02-06 15:36:29 -08:00
medmunds
65a470996f Reformat code with automated tools
- Update blame-ignore-revs
  (fix hash: GH "rebase and merge" doesn't fast-forward)
2023-02-06 15:11:57 -08:00
medmunds
57d0695ac0 Reformat code with automated tools
- Update blame-ignore-revs
2023-02-06 15:05:24 -08:00
medmunds
b4e22c63b3 Reformat code with automated tools
Apply standardized code style
2023-02-06 15:05:24 -08:00
medmunds
40891fcb4a Apply code styles via pre-commit
- Add black and isort for Python styling
- Add doc8 for reStructuredText styling
- Add prettier for css/html/js/md/yaml styling
- Run all styling tools from pre-commit hooks
- Adjust flake8 config for compatibility with black
  (and current Django style)
- Add some other helpful pre-commit hooks
- Update editorconfig to match Django
  (with a few necessary adjustments for Anymail)
- Update `tox -e lint` to run all pre-commit hooks
- Update contributing docs
2023-02-06 15:05:24 -08:00
medmunds
52c7c11312 Release 9.0 2022-12-18 16:27:36 -08:00
medmunds
416d7d433c CI: remove workaround for broken PyPY sqlite release 2022-12-18 16:20:24 -08:00
medmunds
07f5d5f224 CI: update action dependencies
Fixes Node 12 deprecation warnings.

- actions/checkout@v2 --> v3
- actions/setup-python@v2 --> v4
- fkirc/skip-duplicate-actions@v3.4.1 --> v5.3.0
  [pinned to hash]

Also set continue-on-error true in skip_duplicate_runs job,
per recommendation in skip-duplicate-actions release notes.
2022-12-18 16:20:24 -08:00
medmunds
b86613cf15 Docs: add source repo link to main ToC
(Based on feedback from docs site.)
2022-12-18 16:20:24 -08:00
medmunds
287c2175f4 Sendinblue: Support send_at
Add support for delayed sending via
Sendinblue's public beta "scheduledAt"
parameter.

Closes #280
2022-12-18 15:53:45 -08:00
Jelte Fennema
a8cfb2e5eb Fix link to mailjet apikeys
The old link returns a 404 now
2022-12-18 12:22:43 -08:00
medmunds
d37f4ef109 Fix test workflows (again)
Pin to tox v3 for now - in one more place.
2022-12-15 16:29:27 -08:00
medmunds
e9f3444daa Fix test workflows
Pin to tox v3 for now.
(tox plugins aren't ready for tox v4 yet.)
2022-12-15 09:54:44 -08:00
medmunds
681a4afe6b Sendinblue: fix "invalid headers" error
Work around recent (unannounced) Sendinblue API change
that caused "Invalid headers" API error with non-string
custom header values, by converting basic numeric types
to strings. (Borrowed code from SendGrid backend.)

Fixes #288
2022-11-04 16:46:25 -07:00
medmunds
448e8d9d95 Tests: move integration tests to Django 4.1 2022-08-29 13:25:47 -07:00
medmunds
3f05623a2f Drop support for Django 2.x and Python 3.5 2022-08-29 13:25:47 -07:00
Tim Schilling
a4f50c4340 Confirm support for Django 4.1
Replaces deprecated `django.utils.timezone.utc` with
`datetime.timezone.utc` (available since Python 3.2).
2022-08-24 13:24:27 -07:00
medmunds
6b3775a8e9 Tests: fix SparkPost integration test
SparkPost has changed http status for bad API key
from 403 Forbidden to 401 Unauthorized.
2022-07-28 14:29:29 -04:00
medmunds
748ac9fea7 Tests: fix SparkPost integration test
SparkPost has switched http status for bad API key.
2022-07-28 11:56:19 -04:00
David Gilman
e3cd4df1fc Allow requests session customization, document use for automatic retries
* Refactor create_session() out of AnymailRequestsBackend
* Document automatic retries with Requests
2022-06-26 18:52:46 -07:00
puru02
48de044c9b Fix: Postmark tracking webhook handle SubscriptionChange events
Handle Postmark SubscriptionChange events as Anymail 
unsubscribe, subscribe, or bounce Anymail tracking events.
2022-06-07 17:28:39 -07:00
medmunds
a67a40957a Docs: update 'requests' intersphinx url
The python-requests docs ["official" location has changed][0]
to requests.readthedocs.io. (And the old domain is no longer live.)

[0]: https://github.com/psf/requests/issues/6140#issuecomment-1135071992
2022-05-28 09:40:20 -07:00
medmunds
ad08892eb0 Release 8.6 2022-05-15 10:11:00 -07:00
medmunds
2001b1ce2a Update ESP list in PyPI description, keywords 2022-05-15 10:05:25 -07:00
medmunds
09f21a5c2d Mailgun/SendGrid inbound: workaround Django filename issue
Workaround for Django multipart/form-data limitation
where certain attachment filenames cause fields to be dropped
or to end up in request.POST rather than request.FILES.

Handle the MultiValueDictKeyError in inbound webhooks when
this has occurred. Also update docs to recommend avoiding
the problem by using Mailgun and SendGrid's "raw MIME" options.

Also handle reported cases of empty, duplicate keys in Mailgun's
content-id-map.

Fixes #272
2022-05-13 10:19:12 -07:00
medmunds
6a2e30ba8f Docs: note Mailgun broken display name encoding
Document that Mailgun's API can mis-encode
display names containing both punctuation and
non-ASCII characters.

Closes #270
2022-05-03 15:27:05 -07:00
medmunds
33af7c387d Docs: note Mandrill broken attachment filenames 2022-05-03 13:20:31 -07:00
medmunds
d22f03c751 Docs: update Mandrill info
* Update "limited support" note to reflect
  availability of Mandrill trial account
* Update links to Mandrill docs
2022-05-03 13:18:32 -07:00
medmunds
4656b3d6dc Readme: clarify intro; update ESP list; update docs links 2022-05-03 12:02:17 -07:00
medmunds
c7288b9b72 CI: Work around outdated pypy-3.8-v7.3.8 sqlite
pypy-3.8-v7.3.8 accidentally shipped with sqlite v3.7.17,
which is a decade old, and causes the tests to fail with
`django.core.exceptions.ImproperlyConfigured:
SQLite 3.9.0 or later is required`.

Until pypy-3.8-v7.3.9 is available in actions/setup-python,
work around the problem by forcing unqualified "pypy-3.8"
to specific (older) version "pypy-3.8-v7.3.7".

See https://foss.heptapod.net/pypy/pypy/-/issues/3690
and https://github.com/actions/setup-python/issues/339.
2022-03-17 11:58:34 -07:00
medmunds
ddeb938a3c Mandrill: re-enable integration tests
Get Mandrill integration tests working again,
by using a test-mode API key and a trial account.
2022-02-02 16:36:11 -08:00
medmunds
41147b581c Mandrill: don't send unnecessary empty fields
Don't add empty Reply-To header and empty display names
to Mandrill send API data.

Fixes #262
2022-02-02 16:36:11 -08:00
Mike Edmunds
5fdc285e82 CI/Docs: move to anymail.dev
Move all integration tests and contact emails to anymail.dev. 
(Stop using anymail.info.)
2022-02-02 13:59:09 -08:00
medmunds
4d93183e5e CI: get GitHub test matrix from tox envlist
Stop maintaining duplicate (and often not-quite-
in-sync) test matrices in tox.ini and test.yml.
2022-01-30 11:11:41 -08:00
medmunds
3572ec59c9 Release 8.5 2022-01-19 14:57:24 -08:00
medmunds
bb8e583f06 Tests: clean up env var handling
* Replace deprecated strtobool
* Strip whitespace from env values
2022-01-19 14:54:29 -08:00