如何用Python列出Outlook邮件对象的所有属性?
列出Outlook邮件对象的可用属性
由于你用的是win32com.client获取的Outlook COM对象,它不是原生Python对象,直接用dir()或inspect.getmembers()会输出大量内部代理属性,很难分辨出实际可用的业务属性。这里给你两个实用方法:
方法1:用win32com自带的属性映射字典
win32com给COM对象添加了_prop_map_get_字典,里面直接存了所有可直接访问的属性名(就是你要的email.To、email.Body这类),直接遍历它的keys即可:
import win32com.client # 初始化Outlook连接 outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") inbox = outlook.GetDefaultFolder(6) # 6对应Outlook收件箱 messages = inbox.Items # 遍历找到目标邮件 for msg in messages: if "特定主题关键词" in msg.Subject: # 替换成你的主题关键词 print("可用属性列表:") for prop_name in msg._prop_map_get_.keys(): print(prop_name) break
方法2:过滤dir()的输出
如果想用dir(),可以过滤掉以下划线开头的内部属性,剩下的就是常规可用属性:
# 接上面的代码,找到目标msg后 regular_props = [attr for attr in dir(msg) if not attr.startswith('_')] print("过滤后的属性列表:") print(regular_props)
额外技巧:查看属性值
如果想同时看到每个属性的实际值,可以结合getattr(),注意捕获可能的异常(部分属性可能无权限或为空):
for prop_name in msg._prop_map_get_.keys(): try: prop_value = getattr(msg, prop_name) print(f"{prop_name}: {prop_value}") except Exception as e: print(f"{prop_name}: 无法获取值({str(e)})")
内容的提问来源于stack exchange,提问作者Nathaniel Saxe
相关产品推荐
相关产品推荐

