Opened 4 weeks ago

Closed 4 weeks ago

Last modified 3 weeks ago

#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 Jacob Walls, 4 weeks ago

Resolution: wontfix
Status: newclosed

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.

comment:2 by Mike Edmunds, 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.

Note: See TracTickets for help on using tickets.
Back to Top