J'ai un petit programme de test qui me permet de logguer par mail des messages d'erreur. Le problème est que ça ne fonctionne pas "par défaut", j'ai une UnicodeEncodeError lors de l'envoi de mail avec des caractères accentués. Je peux contourner le problème en changeant l'encoding par défaut de python (lignes en commentaire) mais ça ne me plaît pas trop, d'après mes lectures c'est juste un pis-aller ... Y a t'il une solution plus propre pour que le SMTPHandler fonctionne correctement ? A noter que le problème n'existe pas pour le RotatingFileHandler, il loggue bien les accents.
import logging,logging.handlers
import sys
#print sys.getdefaultencoding()
#reload(sys)
#sys.setdefaultencoding('utf-8')
#print sys.getdefaultencoding()
fileHandler = logging.handlers.RotatingFileHandler("/tmp/log.log")
smtpHandler = logging.handlers.SMTPHandler(mailhost=("smtp.example.com",25), fromaddr="toto@example.com", toaddrs="toto@example.com", subject=u"msg d'erreur")
LOG = logging.getLogger()
LOG.addHandler(fileHandler)
LOG.addHandler(smtpHandler)
LOG.error(u"sans accent")
LOG.error(u"accentu\u00E9")
Merci pour vos réflexions !
# saine lecture
Posté par palm123 (site web personnel) . Évalué à 2.
ウィズコロナ
[^] # Re: saine lecture
Posté par norbs . Évalué à 1.
# html ?
Posté par gaaaaaAab . Évalué à 1.
cf http://bytes.com/topic/python/answers/654221-unicode-html-en(...)
[^] # Re: html ?
Posté par norbs . Évalué à 1.
De plus c'est toujours un contournement du pb, et tant qu'à contourner j'utiliserai plutôt un encodage qui supprimerait les accents du type :
unicodedata.normalize('NFKD', u"xxxx") mais ce que je souhaite vraiment c'est un moyen "propre" de faire fonctionner SMTPHandler.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.