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

1 python email api macos

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

Ósc*_*pez 5

Mail.app 将消息存储为 .emlx 文件,据我所知,这是一种未记录的格式。但是您可以将 .emlx 文件转换为标准 mbox 格式(使用this),然后使用邮箱模块处理它们。


Mic*_*ael 5

从 2020 年开始,您可以使用Python emlx 库

pip install emlx
Run Code Online (Sandbox Code Playgroud)

示例代码:

import emlx
import glob

for filepath in glob.iglob("/Users/<username>/Library/Mail/**/*.emlx", recursive=True):
     m = emlx.read(filepath)
Run Code Online (Sandbox Code Playgroud)

在 message 上m,您可以进行各种操作:

>>> m.headers
{'Subject': 'Re: Emlx library ??',
 'From': 'Michael <michael@example.com>',
 'Date': 'Thu, 30 Jan 2020 20:25:43 +0100',
 'Content-Type': 'text/plain; charset=utf-8',
 ...}
>>> m.headers['Subject']
'Re: Emlx library ??'
>>> m.plist
{'color': '000000',
 'conversation-id': 12345,
 'date-last-viewed': 1580423184,
 'flags': {...}
 ...}
>>> m.flags
{'read': True, 'answered': True, 'attachment_count': 2}
Run Code Online (Sandbox Code Playgroud)

如果您需要speed,您可以解析plist并且flags仅:

>>> m = emlx.read(filepath, plist_only=True)
Run Code Online (Sandbox Code Playgroud)