- 论坛徽章:
- 0
|
基本的功能函数.
- from email.MIMEText import MIMEText
- from email.MIMEMultipart import MIMEMultipart
- from email.Header import Header
- from email.Header import decode_header
- from types import *
- import smtplib,poplib,string,sys,os,email
- import cPickle
- def loadSaveMail():
- maillist=[]
- file=open('mail.box','r')
- while 1:
- try:
- maillist.append(cPickle.load(file))
- except EOFError:
- break
- return maillist
- def loadSub():
- headlist=[]
- file=open('mailsub.box','r')
- while 1:
- try:
- headlist.append(cPickle.load(file))
- except EOFError:
- break
- return headlist
-
- def mailmessagelist():
- list,octet=loadmail()
- maillist=processmail(list)
- return mailHeader(maillist[0],octet[0])
- def sendconfig():
- SMTPname=raw_input('SMTPserverName?')
- SMTPuser=raw_input('SMTPusername?')
- SMTPpass=raw_input('SMTPServerPassword?')
- To=raw_input('To?')
- From=raw_input('From?')
-
- def popconfig():
- ## POPname=raw_input('POPServerName?')
- ## POPuser=raw_input('POPusername?')
- ## POPpass=raw_input('POPpassword?')
- POPname='pop.mail.yahoo.com.cn'
- POPuser='jason_learn'
- POPpass='python'
- return POPname,POPuser,POPpass
- def loadmail():
- server=POPconnect()
- maillist=[]
- mailsize=[]
- try:
- (mailCount,mailByte)=server.stat()
- for i in range(0,mailCount):
- (hdr,message,octet)=server.retr(i+1)
- maillist.append(email.message_from_string(string.join(message,'n')))
- mailsize.append(octet)
- for mail in maillist:
- cPickle.dump([mail],open('mail.box','a'))
-
- return maillist,mailsize
- finally:
- server.quit()
-
- def processmail(originalmail):
- processmaillist=[]
- for i in range(len(mailList)):
- processmaillist.append(email.message_from_string(mailList[i]))
- cPickle.dump(processmaillist,open("mail.box",'a'))
- return processmaillist
-
- def POPconnect():
- sname,user,passwd=popconfig()
- server=poplib.POP3(sname)
- server.user(user)
- server.pass_(passwd)
- print server.getwelcome()
- return server
- def SMTPconnect():
- server=smtplib.SMTP(sname)
- server.login(user,passwd)
- return server
- def proFrom(From):
- temp=[]
- for head in decode_header(From):
- if head[1]=='utf-8':
- temp.append(unicode(head[0],'utf-8'))
- else:
- temp.append(head[0])
- return string.join(temp,'')
- def proSubject(Subject):
- temp=[]
- for head in decode_header(Subject):
- if head[1]=='utf-8':
- temp.append(unicode(head[0],'utf-8'))
- else:
- temp.append(head[0])
- return string.join(temp,'')
- def mailHeader(mail,size):
- header=[]
- header.append(proFrom(mail.get('from')))
- header.append(proSubject(mail.get('subject')))
- header.append(mail.get('date'))
- header.append(str(size/1024)+"K")
- cPickle.dump(header,open("mailsub.box",'a'))
- return header
- def showmessage1(mail):
- item = iter([mail])
- stack = [item]
- content=[]
- while stack:
- item = stack[-1]
- try:
- mail = item.next()
- if mail.is_multipart():
- nitem = iter([m for m in mail.get_payload()])
- stack.append(nitem)
- else:
- type=mail.get_content_charset()
- if type==None:
- content.append(mail.get_payload())
- else:
- content.append(unicode(mail.get_payload(decode='base64'),type))
-
- except StopIteration:
- stack.pop()
- return string.join(content,'')
复制代码 |
|