嗨,大家好请你帮我重构这个,所以它是明智pythonic。传入poplib重构使用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(" ", "_")
另外,在_replace_whitespace方法我想有某种清洁程序的其中拿出所有的非法字符,这可能导致处理。
基本上我想用标准的方式写电子邮件到收件箱目录。
我在这里做错了什么?
由于我已经实施了大部分建议,但是:email.Message不断让我失望。我无法正确理解,你能用我的代码给出一个例子吗?非常感谢你 – Setori 2008-10-23 02:54:06