【问题标题】:Python: how to click on an opened outlook email (win32)Python:如何点击打开的 Outlook 电子邮件(win32)
【发布时间】:2021-12-27 19:12:19
【问题描述】:

我需要点击已打开的 Outlook 电子邮件,即显示“批准请求”的特定批准链接。

我正确打开了想要的电子邮件,但我无法点击特定链接。 代码如下:

import win32com.client

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

messages = inbox.Items
messages.Sort("[ReceivedTime]", Descending=True)

for i in range(100):
    message = messages.GetNext()
    print(""+message.Subject, str(message.ReceivedTime))
    if message.Subject == "Mail to approve request":
        message.Display(False)

    else:
        pass

【问题讨论】:

  • 什么是批准按钮(你有截图吗)?什么是text,按钮应该如何显示?
  • 这是一个链接,上面写着“批准请求”

标签: python winapi outlook


【解决方案1】:

您需要解析MailItem.HTMLBody 属性,提取相关链接,使用该链接启动浏览器。

另外,切勿遍历文件夹中的所有项目,请使用 Items.Find/FindNextItems.Restrict"[Subject]='Mail to approve request'" 之类的查询

【讨论】:

    【解决方案2】:

    有几种方法可以在 Python 中以编程方式打开超链接。 How to open a URL in python 页面解释了可能的情况。例如:

    import os
    os.system("start \"\" https://example.com")
    

    使用HTMLBody 属性返回代表指定项目的HTML 正文的字符串。因此,您可以通过解析消息正文以编程方式找到所需的 URL,并以编程方式执行它。

    最后,要查找与您的条件相对应的项目,请使用 Items 类的 Find/FindNextRestrict 方法。在以下文章中阅读有关它们的更多信息:

    请参阅Filtering Items Using Query Keywords 以正确构建搜索条件字符串。

    您还可能会发现 Application 类的 AdvancedSearch 方法很有帮助。在 Outlook 中使用 AdvancedSearch 方法的主要好处是:

    • 搜索在另一个线程中执行。您无需手动运行另一个线程,因为 AdvancedSearch 方法会在后台自动运行它。
    • 可以在任何位置(即超出某个文件夹的范围)搜索任何项目类型:邮件、约会、日历、便笺等。 RestrictFind/FindNext 方法可以应用于特定的 Items 集合(请参阅 Outlook 中 Folder 类的 Items 属性)。
    • 完全支持 DASL 查询(自定义属性也可用于搜索)。您可以在 MSDN 中的 Filtering 文章中阅读更多相关信息。为了提高搜索性能,如果为商店启用了即时搜索,则可以使用即时搜索关键字(请参阅Store 类的IsInstantSearchEnabled 属性)。
    • 您可以随时使用Search 类的Stop 方法停止搜索过程。

    Advanced search in Outlook programmatically: C#, VB.NET 文章中了解有关此方法的更多信息。

    【讨论】:

      猜你喜欢
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      • 2017-05-13
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多