New submission from Michaël Lemaire <m.lema...@rodacom.fr>:

Hi,

I noticed that SMTP.send_message, when getting the sender and recipients from 
the Message object, strips the name from recipients (to keep only the address), 
but not from the sender.

        if from_addr is None:
            # Prefer the sender field per RFC 2822:3.6.2.
            from_addr = (msg[header_prefix + 'Sender']
                           if (header_prefix + 'Sender') in msg
                           else msg[header_prefix + 'From'])
        if to_addrs is None:
            addr_fields = [f for f in (msg[header_prefix + 'To'],
                                       msg[header_prefix + 'Bcc'],
                                       msg[header_prefix + 'Cc'])
                           if f is not None]
            to_addrs = [a[1] for a in email.utils.getaddresses(addr_fields)]

There is an ugly side-effect to that (starting with Python 3.5) : if the sender 
name contains a non-ascii character, send_message will then require the 
SMTPUTF8 option from the SMTP server, and raise a SMTPNotSupportedError if 
unavailable. This is not wanted because the sender name is not actually sent to 
the SMTP server in the "MAIL FROM:" command (it is only sent in the MIME 
payload), so the SMTPUTF8 option should not be required based on it (it should 
only depend on the addresses).

----------
components: Library (Lib)
messages: 311275
nosy: Michaël Lemaire
priority: normal
severity: normal
status: open
title: smtplib's SMTP.send_message behaves differently with from_addr and 
to_addrs
type: behavior
versions: Python 3.4, Python 3.5, Python 3.6, Python 3.7, Python 3.8

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue32727>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to