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是你的朋友.尝试从此链接开始...
例如,我可以看到该消息可能具有比上面列出的更多的属性.例如.
小智 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)
我没有在这里粘贴整个列表,因为我的是波兰语并且不会真正有用.
您可以在OutlookSpy 中查看所有实时 Outlook 对象及其数据。
MailItem对象属性、方法和事件在https://msdn.microsoft.com/en-us/library/office/ff861332.aspx 中有完整记录
我以为我也要在浏览文件夹时添加一些内容-这都是从上面的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获取电子邮件列表的方法。