Title: EmailMessage.as_string is altering the message state and actually fix bugs
Type: resource usage Stage:
Components: Versions: Python 3.8, Python 3.7
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: mardiros
Priority: normal Keywords:

Created on 2020-06-28 09:43 by mardiros, last changed 2020-06-28 09:43 by mardiros.

File name Uploaded Description Edit mardiros, 2020-06-28 09:43
Messages (1)
msg372508 - (view) Author: Guillaume Gauvrit (mardiros) * Date: 2020-06-28 09:43
I am currently refactoring code and use the EmailMessage api
to build message.

I encountered weird behavior while building an email.
The `as_string()` method is fixing the `make_alternative` method.

So, to me their is two bug here: a `as_string` method should not mutate internal state,
and the `make_alternative` should create a correct internal state.

It may be resume in the following program:

𝝿 python
Python 3.8.3 (default, May 17 2020, 18:15:42)
[GCC 10.1.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import email
>>> from email.message import EmailMessage, MIMEPart
>>> msg = EmailMessage()
>>> msg.make_alternative()
>>> print(msg.get_boundary())
>>> print(msg._headers)
[('Content-Type', 'multipart/alternative')]
>>> _ = msg.as_string()
>>> print(msg.get_boundary())
>>> print(msg._headers)
[('Content-Type', 'multipart/alternative; boundary="===============3171625413581695247=="')]
Date User Action Args
2020-06-28 09:43:33mardiroscreate