使用python win32com outlook清楚地记录了对电子邮件功能的阅读

Pho*_*nix 44 python email outlook python-3.x

我试图通过win32com更好地理解Outlook的互动.我一直无法找到允许我使用win32com有效阅读电子邮件的明确文档,从我目前的调查来看,这似乎是用户相当规律的情绪.因此得出以下信息和要求:

有人可以;

1.提供清晰文档位置的链接(如果存在)

2.展开以下内容

以下是我根据阅读其他人的代码找到的当前功能.

拿下面的代码:

import win32com

outlook=win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")

inbox=outlook.GetDefaultFolder(6)

messages=inbox.Items

for message in messages:
    attachments = message.attachments

    for attachment in attachments:
        pass
Run Code Online (Sandbox Code Playgroud)

上面使用的对象具有我所知道的以下功能:

收件箱 -

.Folders
.Items
Run Code Online (Sandbox Code Playgroud)

消息 -

.GetFirst()
.GetLast()
.GetNext()
.GetPrevious()
.Attachments
Run Code Online (Sandbox Code Playgroud)

信息 -

.Subject
.Body
.To
.Recipients
.Sender
.Sender.Address
Run Code Online (Sandbox Code Playgroud)

附件 -

.item()
.Count
Run Code Online (Sandbox Code Playgroud)

附件 -

.filename
Run Code Online (Sandbox Code Playgroud)

如果您知道更多功能,请在您的答案中添加此内容.

Gen*_*ome 26

应用程序参考的visual basic是你的朋友.尝试从此链接开始...

Interop Outlook Mailitem属性

例如,我可以看到该消息可能具有比上面列出的更多的属性.例如.

  • message.CC
  • message.Importance
  • message.LastModificationTime

  • 这是我正在寻找的确切文档,非常感谢您的帮助. (2认同)
  • 有问题,我们不会在任何地方提供用户名和密码.那么outlook如何验证帐户. (2认同)

小智 20

对于每个人都想知道如何到达任何默认文件夹而不仅仅是"收件箱"这里是列表:

3  Deleted Items
4  Outbox
5  Sent Items
6  Inbox
9  Calendar
10 Contacts
11 Journal
12 Notes
13 Tasks
14 Drafts
Run Code Online (Sandbox Code Playgroud)

还有更多(提醒,同步错误等); 您可以使用此代码获得完整列表(受John Cook的文件夹解决方案的启发):

import win32com
outlook=win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
for i in range(50):
    try:
        box = outlook.GetDefaultFolder(i)
        name = box.Name
        print(i, name)
    except:
        pass
Run Code Online (Sandbox Code Playgroud)

我没有在这里粘贴整个列表,因为我的是波兰语并且不会真正有用.

  • 要使其正常工作,您可能需要将导入语句修改为:import win32com.client。最初这个解决方案在 Python 3.6 上无法正常工作。通过添加 .cleint 对其进行调整解决了该问题。 (2认同)

Dmi*_*nko 5

您可以在OutlookSpy 中查看所有实时 Outlook 对象及其数据。

MailItem对象属性、方法和事件在https://msdn.microsoft.com/en-us/library/office/ff861332.aspx 中有完整记录


Joh*_*ook 5

我以为我也要在浏览文件夹时添加一些内容-这都是从上面的Microsoft文档派生的,但是在此处使用可能会有所帮助,特别是如果您尝试在Outlook文件夹结构中的任何地方(收件箱除外)。

您可以使用folders- 浏览文件夹集合-在这种情况下,请注意GetDefaultFolder之后的内容GetNamespace(否则可能会以收件箱结尾)。

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace('MAPI')
folder = outlook.Folders[1]
Run Code Online (Sandbox Code Playgroud)

该数字是您要访问的文件夹的索引。要找出其中有多少个子文件夹:

folder.Count
Run Code Online (Sandbox Code Playgroud)

如果有更多子文件夹,则可以使用其他子文件夹Folders进行更深入的研究:

folder.Folders[2]
Run Code Online (Sandbox Code Playgroud)

Folders 返回子文件夹的列表,因此要获取当前目录中所有文件夹的名称,可以使用快速循环。

for i in range(folder.Count):
    print (folder[i].Name)
Run Code Online (Sandbox Code Playgroud)

每个子文件夹都有一种.Items获取电子邮件列表的方法。