首页 > 编程 > Python > 正文

Python实现读取邮箱中的邮件功能示例【含文本及附件】

2020-01-04 17:07:39
字体:
来源:转载
供稿:网友

本文实例讲述了Python实现读取邮箱中的邮件功能。分享给大家供大家参考,具体如下:

#-*- encoding: utf-8 -*-import sysimport localeimport poplibfrom email import parserimport emailimport string# 确定运行环境的encoding__g_codeset = sys.getdefaultencoding()if "ascii"==__g_codeset:  __g_codeset = locale.getdefaultlocale()[1]#def object2double(obj):  if(obj==None or obj==""):    return 0  else:    return float(obj)  #end if#def utf8_to_mbs(s):  return s.decode("utf-8").encode(__g_codeset)#def mbs_to_utf8(s):  return s.decode(__g_codeset).encode("utf-8")#host = 'pop.exmail.qq.com'username = 'user1@xxxx.cn'password = 'password'pop_conn = poplib.POP3_SSL(host)pop_conn.user(username)pop_conn.pass_(password)#Get messages from server:# 获得邮件messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)]#print messages#print "--------------------------------------------------"# Concat message pieces:messages = ["/n".join(mssg[1]) for mssg in messages]#print messages#Parse message intom an email object:# 分析messages = [parser.Parser().parsestr(mssg) for mssg in messages]i = 0for index in range(0,len(messages)):  message = messages[index];  i = i + 1;  subject = message.get('subject')  h = email.Header.Header(subject)  dh = email.Header.decode_header(h)  subject = unicode(dh[0][0], dh[0][1]).encode('utf8')  mailName = "mail%d.%s" % (i, subject)  f = open('%d.log'%(i), 'w');  print >> f, "Date: ", message["Date"]  print >> f, "From: ", email.utils.parseaddr(message.get('from'))[1]  print >> f, "To: ", email.utils.parseaddr(message.get('to'))[1]  print >> f, "Subject: ", subject  print >> f, "Data: "  j = 0  for part in message.walk():    j = j + 1    fileName = part.get_filename()    contentType = part.get_content_type()    mycode=part.get_content_charset();    # 保存附件    if fileName:      data = part.get_payload(decode=True)      h = email.Header.Header(fileName)      dh = email.Header.decode_header(h)      fname = dh[0][0]      encodeStr = dh[0][1]      if encodeStr != None:        fname = fname.decode(encodeStr, mycode)      #end if      fEx = open("%s"%(fname), 'wb')      fEx.write(data)      fEx.close()    elif contentType == 'text/plain':# or contentType == 'text/html':      #保存正文      data = part.get_payload(decode=True)      content=str(data);      if mycode=='gb2312':        content= mbs_to_utf8(content)      #end if      nPos = content.find('降息')      print("nPos is %d"%(nPos))      print >> f, data    #end if  #end for  f.close()#end forpop_conn.quit()

希望本文所述对大家Python程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表