On django 4.2.1 with django-ses 3.4.1, calling Django's sendmail raised: An error occurred (InvalidClientTokenId) when calling the GetSendQuota operation: The security token included in the request is invalid. Enabling USESES_V2 = True changed the error to: An error occurred (UnrecognizedClientException) when calling the GetAccount operation. The same AWS keys worked fine via aws-cli and raw boto3 in the same codebase, so the credentials themselves were valid and the failure was specific to how django-ses called the SES API.
UnrecognizedClientException when calling the GetAccount operation (django-ses)
The keys were valid, but the IAM identity behind them was missing the permissions django-ses's throttling/quota checks need. Grant the IAM user or role ses:GetAccount and ses:GetSendQuota in addition to the normal send permissions. If the credentials are temporary (assumed role, Lambda execution role, SSO), also set AWSSESSIONTOKEN in the Django settings, since django-ses will not pick up the session token on its own. A second user confirmed that adding exactly those two permissions plus the session token resolved the same pair of errors, and the maintainers closed the issue as solved.
Source: https://github.com/django-ses/django-ses/issues/283
Source: https://github.com/django-ses/django-ses/issues/283