我正在使用 EWS 托管 API 和 C#。
我想知道是否可以检测电子邮件何时移至另一个文件夹。
这是我目前所拥有的:
static void SetPullNotifications(ExchangeService service)
{
PullSubscription subscription = service.SubscribeToPullNotificationsOnAllFolders(
5, null,
EventType.Moved, EventType.Deleted, EventType.Copied, EventType.Modified);
GetEventsResults events = subscription.GetEvents();
foreach (ItemEvent itemEvent in events)
{
switch (itemEvent.EventType)
{
case EventType.Moved:
MessageBox.Show("Item Moved :" + itemEvent.ItemId.UniqueId);
break;
case EventType.Deleted:
MessageBox.Show("Item deleted: " + itemEvent.ItemId.UniqueId);
break;
case EventType.Copied:
MessageBox.Show("Item Copied :" + itemEvent.ItemId.UniqueId);
break;
case EventType.Modified:
MessageBox.Show("Item Modified :" + itemEvent.ItemId.UniqueId);
break;
}
}
}
如果我在方法 GetEvents()
上放置一个断点,然后移动一封电子邮件,这会很好地工作。但是没有断点它就不起作用。 事件
不包含任何结果。
有什么想法吗?
最佳答案
你的方法是正确的,但你遗漏了一些东西。您的代码将仅获取在创建订阅和获取事件之间发生的事件,这就是它仅适用于断点的原因。
要使您的代码正常工作,您应该做两件事。 首先:在启动应用程序时创建订阅并保留对它的引用。 在 Second Store 中,您从订阅中获取水印,并在应用程序启动时重新加载它。可能是这样的:
static PullSubscription s_Subscription;
static void Main()
{
ExchangeService service = CreateService();
CreateSubsciption(service);
//DoSomething;
GetEvents();
//DoSomething;
StoreWatermark(s_Subscription.Watermark);
}
static void CreateSubscription(ExchangeService Service)
{
string watermarkt = LoadWatermark();
s_Subscription = service.SubscribeToPullNotificationsOnAllFolders(
5, watermark,
EventType.Moved, EventType.Deleted, EventType.Copied, EventType.Modified);
}
static void GetEvents()
{
GetEventsResults events = subscription.GetEvents();
foreach (ItemEvent itemEvent in events)
{
switch (itemEvent.EventType)
{
case EventType.Moved:
MessageBox.Show("Item Moved :" + itemEvent.ItemId.UniqueId);
break;
case EventType.Deleted:
MessageBox.Show("Item deleted: " + itemEvent.ItemId.UniqueId);
break;
case EventType.Copied:
MessageBox.Show("Item Copied :" + itemEvent.ItemId.UniqueId);
break;
case EventType.Modified:
MessageBox.Show("Item Modified :" + itemEvent.ItemId.UniqueId);
break;
}
}
}
关于c# - 使用 Exchange Web 服务托管 API 检测电子邮件移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17185881/