我的公司使用 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 中做的事情吗?如果是这样,怎么做?如果没有,有什么替代方法?