使用 python 从发件人电子邮件地址在 Outlook 中创建规则
Use python to create rule in Outlook from sender Email address
我正在尝试创建规则以将电子邮件从一长串发件人列表移至特定文件夹。例如,如果我收到一封来自 john@email.com 的电子邮件,我希望将其从 "Inbox" 移动到 "workstuff\John"(john 是 workstuff 的子文件夹)。
我正在使用 comtypes.clients 和 python 来执行此操作,因为我发现了一个类似的 post ( Setting a property using win32com ),其中一个答案使用 comtypes.clients 在 python 中。
我也使用 https://docs.microsoft.com/en-us/office/vba/outlook/how-to/rules/create-a-rule-to-move-specific-e-mails-to-a-folder 作为指导。
import comtypes.client
o = comtypes.client.CreateObject("Outlook.Application")
rules = o.Session.DefaultStore.GetRules()
rule = rules.Create("Test", 0)
condition = rule.Conditions
condition.From.Recipients.Add(str("fabracht"))
condition.From.Recipients.ResolveAll
#.From.Recipients("fabracht@gmail.com")
condition.Enabled = True
root_folder = o.GetNamespace('MAPI').Folders.Item(1)
dest_folder = root_folder.Folders["Evergreen1"].Folders["Chemistry"]
move = rule.Actions.MoveToFolder
move.__MoveOrCopyRuleAction__com__set_Enabled(True)
move.__MoveOrCopyRuleAction__com__set_Folder(dest_folder)
rules.Save()
我已经能够创建显示在 Outlook 中的规则。但是该规则缺少 "from" 部分。基本上它说:
" 邮件到达后应用此规则
将其移动到 john 文件夹“
我希望规则是:
" 邮件到达后应用此规则
来自约翰@email.com
将其移动到 john 文件夹“
你的post中提到的article包含以下处理From
部分的代码:
'Specify the condition in a ToOrFromRuleCondition object
'Condition is if the message is from "Eugene Astafiev"
Set oFromCondition = oRule.Conditions.From
With oFromCondition
.Enabled = True
.Recipients.Add ("Eugene Astafiev")
.Recipients.ResolveAll
End With
代码应如下所示:
import comtypes.client
o = comtypes.client.CreateObject("Outlook.Application")
rules = o.Session.DefaultStore.GetRules()
rule = rules.Create("Test", 0)
condition = rule.Conditions
condition.From.Recipients.Add(str("fabracht"))
condition.From.Recipients.ResolveAll
oFromCondition = oRule.Conditions.From
oFromCondition.Enabled = True
oFromCondition.Recipients.Add("john@email.com")
oFromCondition.Recipients.ResolveAll
#.From.Recipients("fabracht@gmail.com")
condition.Enabled = True
root_folder = o.GetNamespace('MAPI').Folders.Item(1)
dest_folder = root_folder.Folders["Evergreen1"].Folders["Chemistry"]
move = rule.Actions.MoveToFolder
move.__MoveOrCopyRuleAction__com__set_Enabled(True)
move.__MoveOrCopyRuleAction__com__set_Folder(dest_folder)
rules.Save()
我正在尝试创建规则以将电子邮件从一长串发件人列表移至特定文件夹。例如,如果我收到一封来自 john@email.com 的电子邮件,我希望将其从 "Inbox" 移动到 "workstuff\John"(john 是 workstuff 的子文件夹)。
我正在使用 comtypes.clients 和 python 来执行此操作,因为我发现了一个类似的 post ( Setting a property using win32com ),其中一个答案使用 comtypes.clients 在 python 中。 我也使用 https://docs.microsoft.com/en-us/office/vba/outlook/how-to/rules/create-a-rule-to-move-specific-e-mails-to-a-folder 作为指导。
import comtypes.client
o = comtypes.client.CreateObject("Outlook.Application")
rules = o.Session.DefaultStore.GetRules()
rule = rules.Create("Test", 0)
condition = rule.Conditions
condition.From.Recipients.Add(str("fabracht"))
condition.From.Recipients.ResolveAll
#.From.Recipients("fabracht@gmail.com")
condition.Enabled = True
root_folder = o.GetNamespace('MAPI').Folders.Item(1)
dest_folder = root_folder.Folders["Evergreen1"].Folders["Chemistry"]
move = rule.Actions.MoveToFolder
move.__MoveOrCopyRuleAction__com__set_Enabled(True)
move.__MoveOrCopyRuleAction__com__set_Folder(dest_folder)
rules.Save()
我已经能够创建显示在 Outlook 中的规则。但是该规则缺少 "from" 部分。基本上它说:
" 邮件到达后应用此规则 将其移动到 john 文件夹“
我希望规则是:
" 邮件到达后应用此规则 来自约翰@email.com 将其移动到 john 文件夹“
你的post中提到的article包含以下处理From
部分的代码:
'Specify the condition in a ToOrFromRuleCondition object
'Condition is if the message is from "Eugene Astafiev"
Set oFromCondition = oRule.Conditions.From
With oFromCondition
.Enabled = True
.Recipients.Add ("Eugene Astafiev")
.Recipients.ResolveAll
End With
代码应如下所示:
import comtypes.client
o = comtypes.client.CreateObject("Outlook.Application")
rules = o.Session.DefaultStore.GetRules()
rule = rules.Create("Test", 0)
condition = rule.Conditions
condition.From.Recipients.Add(str("fabracht"))
condition.From.Recipients.ResolveAll
oFromCondition = oRule.Conditions.From
oFromCondition.Enabled = True
oFromCondition.Recipients.Add("john@email.com")
oFromCondition.Recipients.ResolveAll
#.From.Recipients("fabracht@gmail.com")
condition.Enabled = True
root_folder = o.GetNamespace('MAPI').Folders.Item(1)
dest_folder = root_folder.Folders["Evergreen1"].Folders["Chemistry"]
move = rule.Actions.MoveToFolder
move.__MoveOrCopyRuleAction__com__set_Enabled(True)
move.__MoveOrCopyRuleAction__com__set_Folder(dest_folder)
rules.Save()