我是Python的新手。我必须从Outlook中提取电子邮件并获取电子邮件的所有属性/属性。
一个接一个地检索属性,因为我知道它们存在的属性/属性可以正常工作(.Subject,.Body等)。
但是,我需要获取所有可能的属性。那就是我的问题所在。 我一直在找几个小时,发现的唯一答案是:
__dict__
这是我的测试笔记本的摘录:
####### Retrieve email from Outlook #######
import win32com.client
objOutlookMAPI=win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
### Define folder
objOlFolder = objOutlookMAPI.GetDefaultFolder(6)
### Retrieve ant print email
objOlMessages = objOlFolder.Items
# objMessage : class 'win32com.client.CDispatch'
objMessage = objOlMessages.GetLast()
print(objMessage.Subject)
> Are you going to Las Vegas for Black Hat, DefCon, Bsides, or Hacking Diversity? Either or join us on our adventures!
vars(objMessage)
> {'_builtMethods_': {},
'_enum_': None,
'_lazydata_': (<PyITypeInfo at 0x0000021EC7B7D170 with obj at 0x0000021EC7B4B2F8>,
<PyITypeComp at 0x0000021EC7B7D620 with obj at 0x0000021EC7B4B058>),
'_mapCachedItems_': {},
'_oleobj_': <PyIDispatch at 0x0000021EC7B7D290 with obj at 0x0000021EC7B4AAA8>,
'_olerepr_': <win32com.client.build.LazyDispatchItem at 0x21ec8a7ba90>,
'_unicode_to_string_': None,
'_username_': 'GetLast'}
dir(objMessage)
#import inspect
#inspect.getmembers(objMessage)
> [`'_ApplyTypes_'`,
`'_FlagAsMethod'`,
`'_LazyAddAttr_'`,
`'_NewEnum'`,
`'_Release_'`,
`'__AttrToID__'`,
`'__LazyMap__'`,
`'__bool__'`,
`'__call__'`,
`'__class__'`,
`'__delattr__'`,
`'__dict__'`,
`'__dir__'`,
`'__doc__'`,
`'__eq__'`,
`'__format__'`,
`'__ge__'`,
`'__getattr__'`,
`'__getattribute__'`,
`'__getitem__'`,
`'__gt__'`,
`'__hash__'`,
`'__init__'`,
`'__init_subclass__'`,
`'__int__'`,
`'__le__'`,
`'__len__'`,
`'__lt__'`,
`'__module__'`,
`'__ne__'`,
`'__new__'`,
`'__reduce__'`,
`'__reduce_ex__'`,
`'__repr__'`,
`'__setattr__'`,
`'__setitem__'`,
`'__sizeof__'`,
`'__str__'`,
`'__subclasshook__'`,
`'__weakref__'`,
`'_builtMethods_'`,
`'_enum_'`,
`'_find_dispatch_type_'`,
`'_get_good_object_'`,
`'_get_good_single_object_'`,
`'_lazydata_'`,
`'_make_method_'`,
`'_mapCachedItems_'`,
`'_oleobj_'`,
`'_olerepr_'`,
`'_print_details_'`,
`'_proc_'`,
`'_unicode_to_string_'`,
`'_username_'`,
`'_wrap_dispatch_'`]
答案 0 :(得分:1)
为了后人,我在这个页面的 AppointmentItem 对象中找到了我需要的东西:
Outlook Visual Basic for Applications (VBA) reference
只需在页面左侧展开该对象,然后展开属性即可。在那里找到了我需要的一切。也是一个 MeetingItem 对象,仍在找出差异的过程中(这听起来很明显,但我收到的很多约会实际上都是会议(即有与会者)。