代码之家  ›  专栏  ›  技术社区  ›  mbomb007

如何使用getDefaultFolder获取特定文件夹并删除它创建的不需要的文件夹

  •  0
  • mbomb007  · 技术社区  · 7 年前

    我试图用python程序访问我的文件夹(参见 SO answer )当我运行这个时:

    outlook = win32com.client.Dispatch("Outlook.Application")
    namespace = outlook.GetNamespace("MAPI")
    for i in range(50):
        try:print(i,namespace.GetDefaultFolder(i).Name)
        except:pass
    

    上面的程序显示或创建了一些我不知道如何删除的文件夹,例如:

    • Reminders
    • the file so that changes to the file will be reflected in your item.
    • RSS Subscriptions

    除了无法删除这些文件夹外,我还没有真正找到我正在以编程方式查找的文件夹。在outlook中,我创建的文件夹与收件箱、已发送邮件等处于同一级别…但我不知道如何访问这些文件的父文件夹。

    我的文件夹结构:

    • –我的电子邮件地址
      • 收件箱
      • 草稿
      • 发送项目
      • 我想找到的文件夹
      • 文件,以便对文件的更改将反映在项目中。
      • 提醒
      • RSS订阅
      • 搜索文件夹
    2 回复  |  直到 7 年前
        1
  •  1
  •   ivan_pozdeev RenanSS    7 年前

    GetDefaultFolder 的论点是 a enumeration . 您可以使用文档中礼貌给出的数值,

    或者,按 Accessing enumaration constants in Excel COM using Python and win32com ,通过符号值访问它:

    #need to only do this once per machine; after that, a regular Dispatch will do
    o = win32com.client.gencache.EnsureDispatch("Outlook.Application")
    
    from win32com.client import constants
    o.GetDefaultFolder(constants.olFolderContacts)
    

    如您所见,访问一个尚不存在的默认文件夹会创建它。参见 How to Hide or Delete Outlook's Default Folders 如何对付他们。

        2
  •  0
  •   Eugene Astafiev    7 年前

    您需要从 OlDefaultFolders 枚举,而不迭代 GetDefaultFolder 方法。

    不能使用Outlook对象模型删除IPM文件夹,如收件箱、发件箱等。