免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: jasonnbfan
打印 上一主题 下一主题

开源python项目email程序,欢迎大家参加。 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-11-07 10:57 |只看该作者
原帖由 myvm 于 2005-11-7 09:27 发表
我也想参加,可刚刚看完python,之前有bash shell 编程经验,可没用项目经验,
怕心有余,而力不足。


都是没什么经验的,目的就是学习.

论坛徽章:
0
12 [报告]
发表于 2005-11-07 10:58 |只看该作者
原帖由 limodou 于 2005-11-7 08:51 发表
最基本的可以使用email模块,还有其它的可能更现成的email的模块,不过不是标准模块了。


你说的是什么模块?可以看看参考一下.

论坛徽章:
0
13 [报告]
发表于 2005-11-07 12:23 |只看该作者
这个是以前在pypi上看到的,你可以去pypi上搜一下。

论坛徽章:
0
14 [报告]
发表于 2005-11-07 15:05 |只看该作者
基本的功能函数.

  1. from email.MIMEText import MIMEText
  2. from email.MIMEMultipart import MIMEMultipart
  3. from email.Header import Header
  4. from email.Header import decode_header
  5. from types import *
  6. import smtplib,poplib,string,sys,os,email
  7. import cPickle

  8. def loadSaveMail():
  9.     maillist=[]
  10.     file=open('mail.box','r')
  11.     while 1:
  12.         try:
  13.             maillist.append(cPickle.load(file))
  14.         except EOFError:
  15.             break
  16.     return maillist

  17. def loadSub():
  18.     headlist=[]
  19.     file=open('mailsub.box','r')
  20.     while 1:
  21.         try:
  22.             headlist.append(cPickle.load(file))
  23.         except EOFError:
  24.             break
  25.     return headlist
  26.    
  27. def mailmessagelist():
  28.     list,octet=loadmail()
  29.     maillist=processmail(list)
  30.     return mailHeader(maillist[0],octet[0])

  31. def sendconfig():
  32.     SMTPname=raw_input('SMTPserverName?')
  33.     SMTPuser=raw_input('SMTPusername?')
  34.     SMTPpass=raw_input('SMTPServerPassword?')
  35.     To=raw_input('To?')
  36.     From=raw_input('From?')
  37.    
  38. def popconfig():
  39. ##    POPname=raw_input('POPServerName?')
  40. ##    POPuser=raw_input('POPusername?')
  41. ##    POPpass=raw_input('POPpassword?')
  42.     POPname='pop.mail.yahoo.com.cn'
  43.     POPuser='jason_learn'
  44.     POPpass='python'
  45.     return POPname,POPuser,POPpass

  46. def loadmail():
  47.     server=POPconnect()
  48.     maillist=[]
  49.     mailsize=[]
  50.     try:
  51.         (mailCount,mailByte)=server.stat()
  52.         for i in range(0,mailCount):
  53.             (hdr,message,octet)=server.retr(i+1)
  54.             maillist.append(email.message_from_string(string.join(message,'n')))
  55.             mailsize.append(octet)
  56.         for mail in maillist:
  57.             cPickle.dump([mail],open('mail.box','a'))
  58.             
  59.         return maillist,mailsize
  60.     finally:
  61.         server.quit()

  62.    
  63. def processmail(originalmail):
  64.     processmaillist=[]
  65.     for i in range(len(mailList)):
  66.         processmaillist.append(email.message_from_string(mailList[i]))
  67.     cPickle.dump(processmaillist,open("mail.box",'a'))
  68.     return processmaillist
  69.    

  70. def POPconnect():
  71.     sname,user,passwd=popconfig()
  72.     server=poplib.POP3(sname)
  73.     server.user(user)
  74.     server.pass_(passwd)
  75.     print server.getwelcome()
  76.     return server

  77. def SMTPconnect():
  78.     server=smtplib.SMTP(sname)
  79.     server.login(user,passwd)
  80.     return server

  81. def proFrom(From):
  82.     temp=[]
  83.     for head in decode_header(From):
  84.         if head[1]=='utf-8':
  85.             temp.append(unicode(head[0],'utf-8'))
  86.         else:
  87.             temp.append(head[0])
  88.     return string.join(temp,'')

  89. def proSubject(Subject):
  90.     temp=[]
  91.     for head in decode_header(Subject):
  92.         if head[1]=='utf-8':
  93.             temp.append(unicode(head[0],'utf-8'))
  94.         else:
  95.             temp.append(head[0])
  96.     return string.join(temp,'')

  97. def mailHeader(mail,size):
  98.     header=[]
  99.     header.append(proFrom(mail.get('from')))
  100.     header.append(proSubject(mail.get('subject')))
  101.     header.append(mail.get('date'))
  102.     header.append(str(size/1024)+"K")
  103.     cPickle.dump(header,open("mailsub.box",'a'))
  104.     return header

  105. def showmessage1(mail):
  106.     item = iter([mail])
  107.     stack = [item]
  108.     content=[]
  109.     while stack:
  110.         item = stack[-1]
  111.         try:
  112.             mail = item.next()
  113.             if mail.is_multipart():
  114.                 nitem = iter([m for m in mail.get_payload()])
  115.                 stack.append(nitem)
  116.             else:
  117.                 type=mail.get_content_charset()
  118.                 if type==None:
  119.                     content.append(mail.get_payload())
  120.                 else:
  121.                     content.append(unicode(mail.get_payload(decode='base64'),type))
  122.                     
  123.         except StopIteration:
  124.             stack.pop()
  125.     return string.join(content,'')
复制代码

论坛徽章:
0
15 [报告]
发表于 2005-11-07 17:12 |只看该作者
太好了,感谢给新人学习的机会

论坛徽章:
0
16 [报告]
发表于 2005-11-08 14:21 |只看该作者
解信这个最重要的环节怎么没有提到?????

论坛徽章:
0
17 [报告]
发表于 2005-11-08 14:22 |只看该作者
还有mime的编码格式也没有提到阿
没有这个你怎么解带有附件的信?

论坛徽章:
0
18 [报告]
发表于 2005-11-08 14:31 |只看该作者
from email.Header import decode_header
处理信头。

from email.MIMEText import MIMEText
处理编码

from email.MIMEMultipart import MIMEMultipart
处理附件。

仔细看第一页给的帮助连接。  

这两天忙着应聘,过两天写详细的帮助上来。感兴趣的朋友先看看上面那些函数,处理基本邮件够用。
目前没有加处理附件的函数。

论坛徽章:
0
19 [报告]
发表于 2005-11-18 18:57 |只看该作者
找到工作了,试用期内,工作比较忙,email项目这段时间内肯定没有时间作,毕竟吃饭重要。
请大家多多包涵.

论坛徽章:
0
20 [报告]
发表于 2005-11-19 13:38 |只看该作者
原帖由 jasonnbfan 于 2005-11-18 18:57 发表
找到工作了,试用期内,工作比较忙,email项目这段时间内肯定没有时间作,毕竟吃饭重要。
请大家多多包涵.

可惜!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP