Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.python > #2989
| Newsgroups | fr.comp.lang.python |
|---|---|
| Date | 2017-07-13 08:54 -0700 |
| Message-ID | <20b46076-b407-4d19-a3c4-e8d4754ba702@googlegroups.com> (permalink) |
| Subject | Smtplib, MIMEMultipart, sendmail et type de l'attribut payload |
| From | fg.hebert@gmail.com |
Bonjour,
j'essaye d'envoyer un message MIMEMultipart multipart/alternatives, avec deux versions du message, text/plain et text/html.
Je reçois lors de l'appel à sendmail, une exception :
-------------------------------------------
Traceback (most recent call last):
smtp.sendmail(settings.CONTACT_OWNER_EMAIL, [settings.CONTACT_OWNER_EMAIL], mltpart.as_string())
File "/usr/lib/python2.7/email/message.py", line 137, in as_string
g.flatten(self, unixfrom=unixfrom)
File "/usr/lib/python2.7/email/generator.py", line 83, in flatten
self._write(msg)
File "/usr/lib/python2.7/email/generator.py", line 108, in _write
self._dispatch(msg)
File "/usr/lib/python2.7/email/generator.py", line 134, in _dispatch
meth(msg)
File "/usr/lib/python2.7/email/generator.py", line 177, in _handle_text
raise TypeError('string payload expected: %s' % type(payload))
TypeError: string payload expected: <type 'list'>
--------------------------------------------
Après debug, il s'avère que la méthode _dispatch appelée sur le message principal multipart, cherche un handler adéquat au type/sous-type du message.
Si il ne trouve pas de handler déclaré chez lui-même, il appelle une méthode par défaut, dont le nom est produit à partir du type par défaut. Ce type par défaut est défini dans la classe parente email.message : 'text/plain'. Or la classe email.mime.multipart qui sous-classe email.message.Message ne redéfinit pas le type par défaut en multipart/xxxxx du coup le générateur s'attend à avoir une string comme payload et non pas une liste de strings qui composent le multipart.
D'où l'exception.
Est-ce qu'il s'agit d'un bug ou de quelque chose que je n'ai pas compris ?
Merci de votre aide,
Frédéric
Back to fr.comp.lang.python | Previous | Next | Find similar
Smtplib, MIMEMultipart, sendmail et type de l'attribut payload fg.hebert@gmail.com - 2017-07-13 08:54 -0700
csiph-web