使用python更新电子邮件中的类别

时间:2018-02-06 12:32:43

标签: python outlook

我正在尝试使用以下代码更新其中一个数据框中可用的电子邮件类别。

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

i = 0

for message in messages:
       try: 
        message.Categories = output.iat[i,2]
       except:
           message.Categories = 'No Category'
       i = i + 1  

以下脚本用于将更新后的电子邮件从收件箱移至另一个文件夹,然后移至收件箱

donebox = outlook.GetDefaultFolder(6).Folders[20]

def delay(time):
    for j in range(time):
        j=j+1


i = 0

while (messages.Count > 0):
    print(i,messages.Count)
    message = messages.GetLast()
    message.Move(donebox)
    delay(1000000)
    i = i + 1


messages = donebox.Items

i = 0

while (messages.Count > 0):
    print(i,messages.Count)
    message = messages.GetLast()
    message.Move(inbox)
    delay(1000000)
    i = i + 1

在Outlook更新中,电子邮件的输出数据框中的类别只有在选中电子邮件后才能看到。是否有任何可以刷新Outlook的选项,类别将自动更新。请指教。

3 个答案:

答案 0 :(得分:1)

对于所有无法通过Python保存未选择的邮件类别属性更改的人:

mail.Categories='Red category'
mail.Save()

答案 1 :(得分:0)

对我有用!

import win32com.client
from win32com.client import Dispatch    

outlook=win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
folder = outlook.Folders.Item("Inbox")

messages = folder.Items

for i in range(messages.Count):
    messages[i].GetInspector()
    messages[i].Categories = 'Purple Category'
    messages[i].Save()

答案 2 :(得分:0)

如果只需要为每个电子邮件分配一个类别,则dmitrii.kotenko提供了解决方案。

如果您需要附加多个类别,请将类别作为字符串输入,并以逗号分隔

mail.Categories = "category1, category2, category3"
mail.Save()