c# - 使用 C# 制作 Outlook 服务器端规则
问题描述
我有一个奇怪的问题。我为 Outlook 制定了规则。这是非常简单的规则。如果主题中有特定单词,则将电子邮件移动到另一个文件夹。我们也有 Exchange 服务器。我希望这条规则在服务器端起作用。问题是,当我手动创建相同的规则时,它会到达服务器。但是,如果我以编程方式创建此规则,那么 OWA 会告诉我这是 Outlook 规则(并且当 Outlook 关闭时它不起作用)。但是,如果我将转到 Outlooks 规则并按下以编程方式创建的规则(更改>完成>应用),那么服务器将取消它作为服务器端。如何以编程方式按下“应用”按钮(就像我会手动操作一样)?因为似乎只有应用按钮告诉服务器它可以是服务器端规则。所以代码是:
ruleName = FolderName;
session = app.Session;
store = session.DefaultStore;
rules = store.GetRules();
if (!RuleExist(ruleName, rules))
{
rule = rules.Create(ruleName, Outlook.OlRuleType.olRuleReceive);
ruleConditions = rule.Conditions;
subjectTextRuleCondition = ruleConditions.Subject;
subjectTextRuleCondition.Text = new string[] { "TEST" };
subjectTextRuleCondition.Enabled = true;
ruleActions = rule.Actions;
moveRuleAction = ruleActions.MoveToFolder;
moveRuleAction.Folder = INPRIS1_2;
moveRuleAction.Enabled = true;
//ruleActions.DesktopAlert.Enabled = true;
rules.Save(true);
提前谢谢。
经过大量测试后,我发现如果我将文件夹创建和规则创建分开,那么规则将在服务器端创建。它是怎么回事:我创建了新的 Outlook 文件夹,然后在同一个按钮中添加了规则。在那之后,规则只有 Outlook 方面。现在情况如何:首先我创建文件夹(带有第一个按钮)。然后第二个我正在创建规则。然后 srever 看到他们在服务器端。
解决方案
您需要为服务器调用更新。ExchangeService.UpdateInboxRules(IEnumereable<RuleOperation>, bool)
但请注意:
当您调用 UpdateInboxRules 方法时,EWS 会删除客户端发送规则。客户端发送规则存储在客户端上的规则文件夹关联信息 (FAI) 消息中,其他任何地方都没有。EWS 默认删除此规则 FAI 消息,基于 Outlook 将重新创建它的预期。但是,Outlook 无法重新创建不作为扩展规则存在的规则,并且客户端发送规则也不作为扩展规则存在。结果,这些规则丢失了。我们建议您在设计解决方案时考虑这一点。
推荐阅读
- c# - 如何在 Razor View 中获取统计信息
- javascript - 按另一个 MongoDB 结果排序 MongoDB 结果返回 [null, null, null]
- java - java mail-如何发送邮件,其中消息正文是java类中方法的返回表值
- javascript - 我想将数组值存储在隐藏的输入字段中
- php - Laravel 活动日志在更新时不起作用
- flutter - 在 Google Maps Flutter 中为折线制作动画
- onesignal - 错误:找不到符号导入 com.onesignal.OSNotificationOpenResult;
- swift - 如何快速引用结构/类中的类
- kotlin - Kotlin 高阶函数尚不支持对变量的引用
- javascript - Window.open() 中的两种通信方式