python读取本地foxmail_用Python读取Foxmail导出的邮件
祝读者大人圣诞快乐^_^
工作交接,需要把一些处理过的邮件记录到数据库里面,需要记录的内容包括:附件Excel文件中的每一条记录
提报人
生效时间
其中附件和提报人希望能从Foxmail导出的邮件中读出来。
2020-12-25更新:https://blog.csdn.net/weixin_44702836/article/details/105429726blog.csdn.net
在CSDN上找到一个例子(地址如上)。
import eml_parser
import os
with open("D:\\*******.eml", 'rb') as f:
a = f.read()
eml = eml_parser.eml_parser.decode_email_b(a, True, True)
print(eml["header"])
eml["header"]的输出如下,如果需要带姓名的邮箱,就要用print(eml["header"]['header']['from']):
'subject': '******7.28',
'from': 'a@b.com',
'to': ['c@b.com', 'h@s.com'],
'cc': ['l@s.com', 'z@s.com', 'm@s.com', 'z@s.com', 'z@s.com
', 'x@b.com', 'w@b.com'],
'date': datetime.datetime(2020, 7, 28, 10, 6, 29, tzinfo=datetime.timezone(datetime.timedelta(0, 28800))),
'received': [],
'header': {
'x-originating-ip': ['117.158.251.148'],
'x-qq-ssf': ['00400000000000F0'],
'x-qq-mailer': ['QQMail 2.x'],
'x-qq-feat': ['blabla'],
'content-transfer-encoding': ['8Bit'],
'x-qq-goodbg': ['2'],
'x-mailer': ['QQMail 2.x'],
'x-priority': ['3'],
'message-id': [''],
'x-qq-business-origin': ['2'],
'x-qq-mid': ['blabla'],
'mime-version': ['1.0'],
'date': ['Tue, 28 Jul 2020 10:06:29 +0800'],
'to': ['姓名 , 姓名 '],
'from': ['姓名 '],
'cc': ['姓名 , 姓名 , 姓名 , 姓名 , 姓名 , 姓名 ,
姓名 '],
'content-type': ['multipart/mixed; boundary="blabla"'],
'subject': ['bla bla'], 'x-qq-mime': ['TCMime 1.0 by Tencent']}}
获取附件:
if eml.get('attachment'):
for i in eml['attachment']:
print(i['filename'])
x = base64.b64decode(i['raw'])
with open(i['filename'], 'wb') as f:
f.write(x)
attachment的部分内容:
{
'filename': '文件标题.xlsx',
'size': 11036,
'extension': 'xlsx',
'hash': {
'md5': '52448da2d918e56f256a8ed6437c864d',
'sha1': '6c850af6b5e9142f2db08d0a5c39bc9d9048b794',
'sha256': '5861cc1f71914021b3f8a342c4f51b5021589eca3be53e5a6feff2aadb8ffae9',
'sha512': '1339b5141153525c2a8f024db017277e4a079b5e6062755d7c695206d7f35f6f2efd71fcc08e3c7e94ff2a483751ca3026d97edee31d1167057c9e1943d83a5b'},
'raw':这是文件内容
...
}
以下为尝试的其他处理邮件的第三方库:
在stackoverflow上找到一个例子,用extract_msg获取附件:https://stackoverflow.com/questions/55596218/how-to-use-python-to-read-and-extract-data-from-msg-files-on-linuxstackoverflow.com
起点就是这个例子
import extract_msg
msg = extract_msg.Message("D:\\some_mail.7.28.eml")
for msg in msg.attachments:
print(msg)
提示不能识别的文件格式,看起来extract_msg库是处理二进制文件格式的,而Foxmail导出的是文本格式:
extract_msg.exceptions.InvalidFileFormatError: not an OLE2 structured storage file
换成用python open eml file搜索,找到另一个例子:How to read eml file in python?stackoverflow.com
明天继续尝试(今天是平安夜,不加班了)
继续尝试:用上述stackoverflow上的代码,还是识别不出来Foxmail导出的eml文件:
PS G:\axhelper> python .\extract_attach.py
Traceback (most recent call last):
File ".\extract_attach.py", line 145, in
print(extract(f, f.name))
File ".\extract_attach.py", line 116, in extract
m = message_from_file(msgfile)
File "C:\Users\Dell\AppData\Local\Programs\Python\Python36\lib\email\__init__.py", line 54, in message_from_file
return Parser(*args, **kws).parse(fp)
File "C:\Users\Dell\AppData\Local\Programs\Python\Python36\lib\email\parser.py", line 57, in parse
feedparser.feed(data)
File "C:\Users\Dell\AppData\Local\Programs\Python\Python36\lib\email\feedparser.py", line 175, in feed
self._input.push(data)
File "C:\Users\Dell\AppData\Local\Programs\Python\Python36\lib\email\feedparser.py", line 103, in push
self._partial.write(data)
TypeError: string argument expected, got 'bytes'
python读取本地foxmail_用Python读取Foxmail导出的邮件相关推荐
- python播放本地视频_python opencv 读取本地视频文件 修改ffmpeg的方法
Python + opencv 读取视频的三种情况: 情况一:通过摄像头采集视频 情况二:通过本地视频文件获取视频 情况三:通过摄像头录制视频,再读取录制的视频 摄像头采集.本地视频文件的读取.写视频 ...
- Android 读取本地图片文件和读取图片的uri
想读取本地项目里的资源图片,但又不能用到R文件. 总结以下几种读取Bitmap的方法: 1.以文件流的方式,假设sdcard里面有a.png图片 FileInputStream fs = new Fi ...
- html 读取本地xml文件,JS读取本地的XML文件
要想让JS读取本地的XML代码,得具备这样的条件,一般情况下,需要一个JS文件,一个XML文件,最后这两个文件就放在相同的路径下,这样方便调用. 一.XML文件代码示例 大众计算机学习网 www.dz ...
- python 保存本地乱码,解决python保存数据到csv文件中文乱码的方法
解决python保存数据到csv文件中文乱码的方法 发布时间:2020-07-08 13:49:53 来源:亿速云 阅读:695 作者:清晨 小编给大家分享一下解决python保存数据到csv文件中文 ...
- android studio读取本地json,Android Studio读取和创建Json
1,984 JSON的基本语法 1.JSon的四个基本规则 (1)并列的数据之间用逗号(,)分隔 (2)映射用冒号(:)表示 (3)并列数据的集合(数组)用方括号([])表示 (4)映射的集合(对象) ...
- jquery ajax json文件,jQuery ajax读取本地json文件
jQuery ajax读取本地json文件 json文件 { "first":[ {"name":"张三","sex": ...
- jq ajax 读取本地文件,jquery读取本地文件
$(document).ready(function(){ $("#b01").click(function(){ htmlobj=$.ajax({url:"/jquer ...
- [Unity]读取本地图片ArgumentException: A null reference or invalid value was found错误
虽然 (Texture2D)Resources.Load(pngFilePath); 可以读取图片, 但是当项目工程文件中存储大量图片,几百万个图片的时候,就会出现项目编译卡顿,等待时间过长的问题. ...
- 17. GeoTrellis数据读取篇之读取本地文件系统COG格式数据
一.简介 工程介绍 保存cog时,读取类型multibandTile时,报错java堆溢出,改用tile测试通过,貌似需要调大 java堆溢出size 读取cog图层,图层读取成功,读取瓦片时url解 ...
最新文章
- 循环神经网络实现文本情感分类之使用LSTM完成文本情感分类
- 从 Java 档案(JAR) 中读取文件
- java中tomcat检测_eclipse+tomcat测试JSP
- NOIP2009普及组细胞分裂(数论)——yhx
- 12、数据库的设计范式
- aj6 stamps storm_亲友限定的 AJ 6 要发了?3 月好鞋发售清单 for girls
- 电子计算机应由,计算机
- python3 md5_Python3.2 --md5
- 苹果将投资10亿美元扩容位于美国雷诺的数据中心
- java dao接口_java web项目中dao和service前面为什么要有接口呢??
- 数据--第23课 - 队列的优化实现
- cpc客户端网络不通
- 如何使用万能地图下载器下载80坐标的等高线
- java.sql.Date.valueOf处理日期格式IllegalArgumentException异常
- kali获取同局域网设备的图片信息
- 【part1】Tensorflow Object detection API Win10使用教程(Anaconda、tensorflow object detection API安装)
- linux千兆网卡接百兆交换机,千兆交换机可以接百兆网线吗?
- 汉堡包菜单_神圣的汉堡包!
- Tyrion中文文档(含示例源码)
- 区块链技术的应用在数字藏品上的体现