0

我的公司使用 JIRA 来跟踪问题,并设置为每当对问题进行更新时向所有观察者和标记用户发送电子邮件。我们还设置了一些自动化功能,可以在问题关闭时调整有关问题的字段(例如 sprint 编号)(这也会发送电子邮件)。我在 Outlook 中还有一个过滤器,可以将来自 JIRA 的任何电子邮件放入单独的子文件夹“JIRA”中。

我经常收到关于已关闭问题的电子邮件。如果 JIRA 问题已经关闭,我正在尝试编写一个小的 Python 脚本,它将所有这些电子邮件标记为已读。基本的想法是我可以每周运行一次这个脚本来清理我的邮箱。

我正在使用 pywin32 和 jira 包来执行此操作,但我不知道如何更改消息状态。文档稀缺的事实无济于事......

是)我有的:

import re
import textwrap

from jira import JIRA
import pandas as pd
import win32com.client

jira = JIRA("<JIRA URL>", None, ("<USER>", "<JIRA API key>"))
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
wrapper = textwrap.TextWrapper(initial_indent="", width=100, subsequent_indent=" " * 4)
days_back = 10
start_time = pd.to_datetime("now").floor("D") - pd.to_timedelta(days_back, unit="D")
for message in outlook.getDefaultFolder(6).Folders.Item("JIRA").Items.Restrict(f"[ReceivedTime] >= '{start_time.strftime('%d/%m/%Y %H:%M %p')}'"):
    if message.Unread:
        jira_issue = re.search("\[JIRA\] \([A-Z0-9-]+\)", str(message)).group().split()[1][1:-1]
        print(message, jira_issue)
        print(message.body)
        issue = jira.issue(jira_issue)
        status = issue.fields.status
        if status in ("Done", "Checked"):
            message.Unread = False

本 SO issue中所述。这似乎没有将任何电子邮件标记为已读。

这是我什至可以在 Python 中做的事情吗?如果是这样,怎么做?如果没有,有什么替代方法?

4

1 回答 1

1

您可以使用Categories属性将红色类别分配给 Outlook 中的项目。Categories是已分配给 Outlook 项目的类别名称的分隔字符串。此属性使用在 Windows 注册表中的值名称 sList 中指定的字符HKEY_CURRENT_USER\Control Panel\International作为多个类别的分隔符。请参阅以编程方式设置 Outlook 邮件项的类别?了解更多信息。

于 2022-02-22T20:22:03.150 回答