python 读取邮件附件_Python实现读取邮箱中的邮件功能示例【含文本及附件】-程序员宅基地

技术标签: python 读取邮件附件  

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

#-*- encoding: utf-8 -*-

import sys

import locale

import poplib

from email import parser

import email

import 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 = '[email protected]'

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 = 0

for 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 for

pop_conn.quit()

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39638708/article/details/110775647

智能推荐

Spring(五)Spring整合Hibernate-程序员宅基地

文章浏览阅读275次。Spring整合Hibernate_spring整合hibernate

Eclipse 常用快捷键及使用技巧-程序员宅基地

文章浏览阅读78次。做 java 开发的,经常会用 Eclipse 或者 MyEclise 集成开发环境,一些实用的 Eclipse 快捷键和使用技巧,可以在平常开发中节约出很多时间提高工作效率,下面我就结合自己开发中的使用和大家分享一下 Eclipse 中常用到的快捷键和技巧。15 个 Eclipse 常用开发快捷键使用技巧1、alt+?或alt+/:自动补全代码或者提示代码这个是我最得意的快捷键组..._eclipese 使用技巧大全

42 SAP报错:作业类型 ACT001 没有为成本中心 1088 1200990001 设置(Activity type ATC001 not set up for cost center XXX)_作业类型 lab 没有为成本中心 ql99 1001 设置-程序员宅基地

文章浏览阅读567次,点赞6次,收藏11次。解决方案:CO模块使用前台事务码KP26维护活动类型价格,即可。业务操作:PP模块前台事务码CR02维护活动类型时,报错如上。报错原因:CO模块没有为活动类型进行价格维护。CO模块KP26维护作业类型价格完毕。2024年1月26日 写于上海。事务码KP26进入,_作业类型 lab 没有为成本中心 ql99 1001 设置

TortoiseGit解决TortoiseGitPlink要求输入密码-程序员宅基地

文章浏览阅读3.2k次,点赞4次,收藏10次。解决TortoiseGitPlink要求输入密码_tortoisegitplink

什么是大端存储和小端存储-程序员宅基地

文章浏览阅读4.7k次,点赞2次,收藏5次。详细了解大端和小端的存储_大端存储和小端存储

【共读】企业信息安全建设与运维指南(一)_信息安全运营服务实施指南研究-程序员宅基地

文章浏览阅读6.3k次,点赞5次,收藏49次。一、从零开始建设企业信息安全系统:企业信息安全体系分为:信息安全技术体系和信息安全管理体系 信息安全技术体系: 两个层面: 1.需建设安全相关基础设施和系统,以具备解决相关安全问题的能力。 2.需具备安全运营能力,只有正确部署和使用设备,才能真正保障信息安全。 信息安全管理体系: 两个层面: 1.具备信息安全相关的制度、规范、流程及策略。 2.具..._信息安全运营服务实施指南研究

随便推点

5.5浮点数运算方法和浮点数运算器_浮点运算方法和浮点运算器-程序员宅基地

文章浏览阅读1k次。必须阶码一致才可以进行浮点数运算。_浮点运算方法和浮点运算器

【教程】CDQ套CDQ——四维偏序问题【转载】-程序员宅基地

文章浏览阅读128次。转自前言 上一篇文章已经介绍了简单的CDQ分治,包括经典的二维偏序和三维偏序问题,还有带修改和查询的二维/三维偏序问题。本文讲介绍多重CDQ分治的嵌套,即多维偏序问题。四维偏序问题给定N(N<=20000)个有序四元组(a,b,c,d),求对于每一个四元组(a,b,c,d),有多少个四元组(a2,b2,c2,d2)满足a2<a &..._cdq处理四维偏序

Unity两个相机设置_unity设置两个摄像机-程序员宅基地

文章浏览阅读571次,点赞8次,收藏10次。Culling Mask:bg(将背景图片的layer设置为bg,层级在最后面,比如这里设置为9,背景图片一般放在2DObject-sprite里)main Camera:用来照物体的,CameraUI:用来照背景的。_unity设置两个摄像机

瑞_VMware虚拟机安装Linux纯净版(含卸载,图文超详细)_虚拟机安装linuxqq和卸载的图片-程序员宅基地

文章浏览阅读3.7k次,点赞90次,收藏24次。VMware虚拟机安装Linux纯净版(含卸载,图文超详细)_虚拟机安装linuxqq和卸载的图片

即时通讯开发平台AnyChat的开发流程及应用_axchat的使用过程-程序员宅基地

文章浏览阅读1.1k次。AnyChat开发流程指南下面列出AnyChatPlatform Core SDK基本开发流程,适用于开发视频会议系统、语音视频聊天系统、远程教育平台以及即时通讯平台(IM)等。 一、初始化该部分是首先要完成的,用于设置SDK的一些行为,包括设置对应的回调函数、设置SDK组件路径、设置是否产生日志文件等,通常初始化AnyChat SDK的代码如下(C++): 01.// 打_axchat的使用过程

计算机毕设Python+Vue疫情期间学生作业线上管理系统(程序+LW+部署)_在线作业管理系统测试用例-程序员宅基地

文章浏览阅读190次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:SSM + mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。_在线作业管理系统测试用例

推荐文章

热门文章

相关标签