Hello,
I was looking at
because I had the same problem, easily reproduced:
from django.core.mail import send_mail
send_mail(
"Hello",
"message",
"from@example.com",
["last_name, first_name <info@test.com>"],
fail_silently=False,
)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/testmail/.venv/lib/python3.12/site-packages/django/core/mail/__init__.py", line 92, in send_mail
return mail.send()
^^^^^^^^^^^
File "/home/testmail/.venv/lib/python3.12/site-packages/django/core/mail/message.py", line 307, in send
return self.get_connection(fail_silently).send_messages([self])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/testmail/.venv/lib/python3.12/site-packages/django/core/mail/backends/smtp.py", line 136, in send_messages
sent = self._send(message)
^^^^^^^^^^^^^^^^^^^
File "/home/testmail/.venv/lib/python3.12/site-packages/django/core/mail/backends/smtp.py", line 151, in _send
sanitize_address(addr, encoding) for addr in email_message.recipients()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/testmail/.venv/lib/python3.12/site-packages/django/core/mail/message.py", line 93, in sanitize_address
raise ValueError(
ValueError: Invalid address; only last_name could be parsed from "last_name, first_name <info@test.com>"
This is especially problematic when the to-string is constructed like
to_addr = f"{name} <{email}>"
where name and email are from model fields – where at least name is normally not pre-sanitized for use in an email address.
The original reporter suggested to (only) add a note the documentation, so can we reopen?