祝读者大人圣诞快乐^_^

工作交接,需要把一些处理过的邮件记录到数据库里面,需要记录的内容包括:附件Excel文件中的每一条记录

提报人

生效时间

其中附件和提报人希望能从Foxmail导出的邮件中读出来。

2020-12-25更新:https://blog.csdn.net/weixin_44702836/article/details/105429726​blog.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-linux​stackoverflow.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导出的邮件相关推荐

  1. python播放本地视频_python opencv 读取本地视频文件 修改ffmpeg的方法

    Python + opencv 读取视频的三种情况: 情况一:通过摄像头采集视频 情况二:通过本地视频文件获取视频 情况三:通过摄像头录制视频,再读取录制的视频 摄像头采集.本地视频文件的读取.写视频 ...

  2. Android 读取本地图片文件和读取图片的uri

    想读取本地项目里的资源图片,但又不能用到R文件. 总结以下几种读取Bitmap的方法: 1.以文件流的方式,假设sdcard里面有a.png图片 FileInputStream fs = new Fi ...

  3. html 读取本地xml文件,JS读取本地的XML文件

    要想让JS读取本地的XML代码,得具备这样的条件,一般情况下,需要一个JS文件,一个XML文件,最后这两个文件就放在相同的路径下,这样方便调用. 一.XML文件代码示例 大众计算机学习网 www.dz ...

  4. python 保存本地乱码,解决python保存数据到csv文件中文乱码的方法

    解决python保存数据到csv文件中文乱码的方法 发布时间:2020-07-08 13:49:53 来源:亿速云 阅读:695 作者:清晨 小编给大家分享一下解决python保存数据到csv文件中文 ...

  5. android studio读取本地json,Android Studio读取和创建Json

    1,984 JSON的基本语法 1.JSon的四个基本规则 (1)并列的数据之间用逗号(,)分隔 (2)映射用冒号(:)表示 (3)并列数据的集合(数组)用方括号([])表示 (4)映射的集合(对象) ...

  6. jquery ajax json文件,jQuery ajax读取本地json文件

    jQuery ajax读取本地json文件 json文件 { "first":[ {"name":"张三","sex": ...

  7. jq ajax 读取本地文件,jquery读取本地文件

    $(document).ready(function(){ $("#b01").click(function(){ htmlobj=$.ajax({url:"/jquer ...

  8. [Unity]读取本地图片ArgumentException: A null reference or invalid value was found错误

    虽然 (Texture2D)Resources.Load(pngFilePath); 可以读取图片, 但是当项目工程文件中存储大量图片,几百万个图片的时候,就会出现项目编译卡顿,等待时间过长的问题. ...

  9. 17. GeoTrellis数据读取篇之读取本地文件系统COG格式数据

    一.简介 工程介绍 保存cog时,读取类型multibandTile时,报错java堆溢出,改用tile测试通过,貌似需要调大 java堆溢出size 读取cog图层,图层读取成功,读取瓦片时url解 ...

最新文章

  1. 循环神经网络实现文本情感分类之使用LSTM完成文本情感分类
  2. 从 Java 档案(JAR) 中读取文件
  3. java中tomcat检测_eclipse+tomcat测试JSP
  4. NOIP2009普及组细胞分裂(数论)——yhx
  5. 12、数据库的设计范式
  6. aj6 stamps storm_亲友限定的 AJ 6 要发了?3 月好鞋发售清单 for girls
  7. 电子计算机应由,计算机
  8. python3 md5_Python3.2 --md5
  9. 苹果将投资10亿美元扩容位于美国雷诺的数据中心
  10. java dao接口_java web项目中dao和service前面为什么要有接口呢??
  11. 数据--第23课 - 队列的优化实现
  12. cpc客户端网络不通
  13. 如何使用万能地图下载器下载80坐标的等高线
  14. java.sql.Date.valueOf处理日期格式IllegalArgumentException异常
  15. kali获取同局域网设备的图片信息
  16. 【part1】Tensorflow Object detection API Win10使用教程(Anaconda、tensorflow object detection API安装)
  17. linux千兆网卡接百兆交换机,千兆交换机可以接百兆网线吗?
  18. 汉堡包菜单_神圣的汉堡包!
  19. Tyrion中文文档(含示例源码)
  20. 区块链技术的应用在数字藏品上的体现

热门文章

  1. 百度人脸识别sdk图片转码的问题
  2. m1卡工作原理和相关总结
  3. 算法导论 练习5.4-4
  4. 企业级无代码,掀起10倍速效率革命!
  5. Yuki Chan全自动渗透测试工具的安装及使用
  6. python面试 --基础题
  7. Winform平台的HTML编辑控件——Zeta HTML
  8. java在浏览器闪退_浏览器连续闪退,作者来看看错误日志
  9. MAX7219数码管+RTC时钟——stm32
  10. 昨夜西风凋碧树,独上高楼,望断天涯路————马哥培训第二天