Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > fr.comp.lang.python > #2989

Smtplib, MIMEMultipart, sendmail et type de l'attribut payload

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

Show all headers | View raw


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


Thread

Smtplib, MIMEMultipart, sendmail et type de l'attribut payload fg.hebert@gmail.com - 2017-07-13 08:54 -0700

csiph-web