用于在mac os X上以Python编程方式访问邮件的API
我想通过python编程访问MacOSX系统上存在的所有邮件,这些邮件由内置的“mail.app”程序接收。是否有友好的API用于访问该程序存储的邮件?我的印象是,它不仅仅是一种文本格式,而且可能更复杂。谢谢。Mail.app将邮件存储为.emlx文件,这是一种未记录的AFAIK格式。但是,您可以将.emlx文件转换为标准mbox格式(使用),然后使用模块对其进行处理。Mail.app将邮件存储为.emlx文件,这是AFAIK的一种未记录格式。但是,您可以将.emlx文件转换为标准mbox格式(使用),然后使用模块对其进行处理。从2020年起,您可以使用 示例代码:用于在mac os X上以Python编程方式访问邮件的API,python,macos,api,email,Python,Macos,Api,Email,我想通过python编程访问MacOSX系统上存在的所有邮件,这些邮件由内置的“mail.app”程序接收。是否有友好的API用于访问该程序存储的邮件?我的印象是,它不仅仅是一种文本格式,而且可能更复杂。谢谢。Mail.app将邮件存储为.emlx文件,这是一种未记录的AFAIK格式。但是,您可以将.emlx文件转换为标准mbox格式(使用),然后使用模块对其进行处理。Mail.app将邮件存储为.emlx文件,这是AFAIK的一种未记录格式。但是,您可以将.emlx文件转换为标准mbox格式(
import emlx
import glob
for filepath in glob.iglob("/Users/<username>/Library/Mail/", recursive=True):
m = emlx.read(filepath)
如果需要速度,则只能解析plist
和标志
:
>>> m = emlx.read(filepath, plist_only=True)
从2020年起,您可以使用 示例代码:
import emlx
import glob
for filepath in glob.iglob("/Users/<username>/Library/Mail/", recursive=True):
m = emlx.read(filepath)
如果需要速度,则只能解析plist
和标志
:
>>> m = emlx.read(filepath, plist_only=True)
改用这个:
fname = glob.glob('./mails/**/*.emlx', recursive = True)
msg = emlx.read(fname)
print(msg.headers['Subject'])
路径字符串中的/**/用作通配符请改为使用:
fname = glob.glob('./mails/**/*.emlx', recursive = True)
msg = emlx.read(fname)
print(msg.headers['Subject'])
路径字符串中的/**/用作通配符是用于一次性导出/转换还是希望程序定期检查?如果是前者,您可以使用“Mail.app”程序手动将电子邮件导出为标准格式,如RFC822,然后使用Python解析。这是一次性导出/转换,还是希望程序定期检查?如果是前者,您可以使用“Mail.app”程序手动将电子邮件导出为标准格式,如RFC822,然后使用Python解析。我想递归选项用于读取文件夹。对我不起作用:文件“/usr/local/lib/python3.7/site packages/emlx/emlx.py”,第112行,在read filebuffer=open(filepath_或_buffer,“rb”)中是directoryError:[Errno 21]是一个目录:“/Users/javor/Library/Mail/”我想递归选项用于读取文件夹。对我不起作用:File“/usr/local/lib/python3.7/site packages/emlx/emlx.py”,第112行,在read filebuffer=open(filepath_或_buffer,“rb”)中是directoryError:[Errno 21]是一个目录:“/Users/javor/Library/Mail/”这基本上就是Michael的答案,不是吗?这基本上就是Michael的答案,不是吗?