Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于在mac os X上以Python编程方式访问邮件的API_Python_Macos_Api_Email - Fatal编程技术网

用于在mac os X上以Python编程方式访问邮件的API

用于在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格式(

我想通过python编程访问MacOSX系统上存在的所有邮件,这些邮件由内置的“mail.app”程序接收。是否有友好的API用于访问该程序存储的邮件?我的印象是,它不仅仅是一种文本格式,而且可能更复杂。谢谢。

Mail.app将邮件存储为.emlx文件,这是一种未记录的AFAIK格式。但是,您可以将.emlx文件转换为标准mbox格式(使用),然后使用模块对其进行处理。

Mail.app将邮件存储为.emlx文件,这是AFAIK的一种未记录格式。但是,您可以将.emlx文件转换为标准mbox格式(使用),然后使用模块对其进行处理。

从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)

从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的答案,不是吗?