#36805 closed Uncategorized (wontfix)
Use `None` as default value for `from_email` in `send_mail`-function
| Reported by: | Adrian Bürger | Owned by: | |
|---|---|---|---|
| Component: | Core (Mail) | Version: | 4.2 |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
The docstring of the function send_mail states that
"If from_email is None, use the DEFAULT_FROM_EMAIL setting."
from_email is a required argument which would explicitly need to be set to None so that DEFAULT_FROM_EMAIL is applied. However, other inputs of this function such as auth_user and auth_password which have a settings-value applied if they are None, are given a default value of None. Therefore, I am not a sure whether this behavior is intended; personally, I would expect from_email to have a default value of None. Otherwise, users get an unexpected TypeError: send_mail() missing 1 required positional argument: 'from_email'.
I see this in Django 4.2 but still also in the current main branch on GitHub.
Thank you for your consideration and for your work.
Change History (2)
comment:1 by , 4 weeks ago
| Resolution: | → wontfix |
|---|---|
| Status: | new → closed |
comment:2 by , 3 weeks ago
Expanding on Jacob's response: send_mail() is one of the oldest functions in Django and there's a lot of reluctance to change its behavior. (You'll find comments in the code indicating its API is "frozen.")
Django's EmailMessage class is a newer API that supports additional features and more flexible usage. All of its parameters, including from_email, are optional. So you can write:
from django.core.mail import EmailMessage EmailMessage(to=["to@example.com"], subject="quick note").send()
to send a message using the DEFAULT_FROM_EMAIL with an empty body.
Thanks for the ticket. If the proposal is to change the signature, it's not worth breaking backward compatibility if it's not causing any issues.