Salut les gars, pourriez-vous s'il vous plait m'aider à refactoriser ceci pour qu'il soit sensiblement pythonique.Réécriture de poplib entrante en utilisant Windows python 2.3
import sys
import poplib
import string
import StringIO, rfc822
import datetime
import logging
def _dump_pop_emails(self):
self.logger.info("open pop account %s with username: %s" % (self.account[0], self.account[1]))
self.popinstance = poplib.POP3(self.account[0])
self.logger.info(self.popinstance.getwelcome())
self.popinstance.user(self.account[1])
self.popinstance.pass_(self.account[2])
try:
(numMsgs, totalSize) = self.popinstance.stat()
for thisNum in range(1, numMsgs+1):
(server_msg, body, octets) = self.popinstance.retr(thisNum)
text = string.join(body, '\n')
mesg = StringIO.StringIO(text)
msg = rfc822.Message(mesg)
name, email = msg.getaddr("From")
emailpath = str(self._emailpath + self._inboxfolder + "\\" + email + "_" + msg.getheader("Subject") + ".eml")
emailpath = self._replace_whitespace(emailpath)
file = open(emailpath,"wb")
file.write(text)
file.close()
self.popinstance.dele(thisNum)
finally:
self.logger.info(self.popinstance.quit())
def _replace_whitespace(self,name):
name = str(name)
return name.replace(" ", "_")
également dans la méthode _replace_whitespace Je voudrais avoir une sorte de routine de nettoyage qui prend tous les caractères illégaux qui pourraient causer le traitement.
Fondamentalement, je veux écrire le courriel dans le répertoire de la boîte de réception d'une manière standard.
Est-ce que je fais quelque chose de mal ici?
Merci d'avoir mis en œuvre la plupart de vos suggestions, mais: l'email.Message ne cesse de me tuer. Je ne peux pas le faire correctement, pourriez-vous donner un exemple avec mon code? Merci de bien vouloir – Setori