anymail.exceptions
AnymailUnsupportedFeature
If the email tries to use features that aren't supported by the ESP, the send call will raise an !AnymailUnsupportedFeature
error, and the message won't be sent. See unsupported-features
.
You can disable this exception (ignoring the unsupported features and sending the message anyway, without them) by setting ANYMAIL_IGNORE_UNSUPPORTED_FEATURES
to True.
AnymailRecipientsRefused
Raised when all recipients (to, cc, bcc) of a message are invalid or rejected by your ESP at send time. See recipients-refused
.
You can disable this exception by setting ANYMAIL_IGNORE_RECIPIENT_STATUS
to True in your settings.py, which will cause Anymail to treat any non-AnymailAPIError
response from your ESP as a successful send.
AnymailAPIError
If the ESP's API fails or returns an error response, the send call will raise an !AnymailAPIError
.
The exception's status_code
and response
attributes may help explain what went wrong. (Tip: you may also be able to check the API log in your ESP's dashboard. See troubleshooting
.)
In production, it's not unusual for sends to occasionally fail due to transient connectivity problems, ESP maintenance, or other operational issues. Typically these failures have a 5xx status_code
. See transient-errors
for suggestions on retrying these failed sends.
AnymailInvalidAddress
0.7
The send call will raise a !AnymailInvalidAddress
error if you attempt to send a message with invalidly-formatted email addresses in the from_email
or recipient lists.
One source of this error can be using a display-name ("real name") containing commas or parentheses. Per 5322
, you should use double quotes around the display-name portion of an email address:
# won't work:
send_mail(from_email='Widgets, Inc. <widgets@example.com>', ...)
# must use double quotes around display-name containing comma:
send_mail(from_email='"Widgets, Inc." <widgets@example.com>', ...)
AnymailSerializationError
The send call will raise a !AnymailSerializationError
if there are message attributes Anymail doesn't know how to represent to your ESP.
The most common cause of this error is including values other than strings and numbers in your merge_data
or metadata
. (E.g., you need to format Decimal and date data to strings before setting them into merge_data
.)
See formatting-merge-data
for more information.