Opened 14 months ago
Last modified 8 months ago
#35713 assigned Bug
Django generates invalid address on unicode characters in the local part of an e-mail address
| Reported by: | Mike Edmunds | Owned by: | Vaibhav Pant |
|---|---|---|---|
| Component: | Core (Mail) | Version: | dev |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
#25986 attempted to add support for non-ASCII characters in the local-part (username) of an email address, by encoding it as an RFC 2047 encoded-word. PR#6377 landed in Django 1.10.
However, RFC 2047 specifically prohibits using an encoded-word in an addr-spec (the username@domain portion of an email address). Encoded-words are only allowed in address display-names.
The resulting email address is not supported by any known MTA or email client, and the message will either bounce or just disappear undelivered.
To reproduce:
from django.core.mail import EmailMessage email = EmailMessage(to=["jörg@example.no"]) print(email.message().as_bytes().decode()) # examine generated message # ... # To: =?utf-8?b?asO2cmc=?=@example.no # ... email.send() # if you've set up a mailbox for jörg at example.no
Actual results: as above (no errors)
Expected results: no =?utf-8?... encoded-word in the generated To addr-spec. And an error on the call to send() (or message()) saying that a non-ASCII local-part is not supported.
There is no supported way to send to non-ASCII usernames using 7-bit email headers. That requires using 8-bit headers with the SMTPUTF8 extension under RFC 6530/6531/6532. (That new feature request is ticket #35714; this ticket is solely about removing the current buggy behavior.)
For more details see #25986 comments 12-13.
Change History (6)
comment:1 by , 14 months ago
| Triage Stage: | Unreviewed → Accepted |
|---|---|
| Version: | 5.0 → dev |
comment:2 by , 14 months ago
| Owner: | set to |
|---|---|
| Status: | new → assigned |
comment:3 by , 14 months ago
| Description: | modified (diff) |
|---|
comment:4 by , 14 months ago
| Owner: | removed |
|---|---|
| Status: | assigned → new |
comment:5 by , 14 months ago
The proposed patch for #35581 will raise an error for non-ASCII local-parts in send() when using the SMTP EmailBackend.
Catching the error earlier, in message(), would require additional work.
comment:6 by , 14 months ago
| Owner: | set to |
|---|---|
| Status: | new → assigned |
Looks legitimate.