使用Microsoft.Office.Interop.Outlook创建规则时缺失延迟交付动作的解决方法
解决Outlook 2019通过Interop创建延迟1分钟发送邮件规则的问题
要实现延迟1分钟发送的规则动作,你需要使用RuleActions.Defer属性,设置延迟分钟数并启用该动作。以下是补充完整后的代码:
string ruleName = "rules defer delivery by 1 min"; Microsoft.Office.Interop.Outlook.Application OutlookApplication = new Microsoft.Office.Interop.Outlook.Application(); Microsoft.Office.Interop.Outlook.Rules rules = null; try { rules = OutlookApplication.Session.DefaultStore.GetRules(); } catch (System.Exception ex) { MessageBox.Show($"Error:({ex.Message})"); return; } // 创建发送类规则 Microsoft.Office.Interop.Outlook.Rule rule = rules.Create(ruleName, Microsoft.Office.Interop.Outlook.OlRuleType.olRuleSend); rule.Name = ruleName; // 禁用所有条件,确保规则应用于所有已发送邮件 rule.Conditions.From.Enabled = false; rule.Conditions.Subject.Enabled = false; // 配置延迟交付动作 rule.Actions.Defer.Enabled = true; // 设置延迟时间为1分钟 rule.Actions.Defer.Minutes = 1; rule.Enabled = true; try { rules.Save(true); MessageBox.Show($"success role creation ({ruleName})"); } catch (System.Exception ex) { MessageBox.Show($"Error:({ex.Message})"); }
关键说明
RuleActions.Defer是专门用于延迟邮件交付的动作对象,必须设置Enabled = true才会生效Minutes属性直接设置延迟的分钟数,填1即可满足需求- 你之前禁用所有条件的操作是正确的,这样规则会对所有你发送的邮件生效
其他解决方案
如果不需要通过代码自动创建,也可以手动在Outlook中配置:
- 打开Outlook,点击「文件」→「管理规则和通知」
- 点击「新建规则」,选择「对我发送的邮件应用规则」,点击下一步
- 不勾选任何条件,直接点击下一步(弹出提示时选择「是」确认应用于所有发送邮件)
- 在动作列表中选择「延迟交付X分钟」,点击下方的「X分钟」设置为1分钟
- 完成规则命名并保存即可
内容的提问来源于stack exchange,提问作者Orion
相关产品推荐
相关产品推荐

