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

时间:2012-01-22 04:21:44

标签: python macos api email

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

pip install emlx

示例代码:

import emlx
import glob

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

在消息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}

如果需要速度,则只能解析plistflags

>>> m = emlx.read(filepath, plist_only=True)

答案 2 :(得分:0)

改为使用此:

fname = glob.glob('./mails/**/*.emlx', recursive = True)
    msg = emlx.read(fname)
    print(msg.headers['Subject'])

路径字符串中的/ ** /用作通配符