gpt4 book ai didi

c# - 使用 Exchange Web 服务托管 API 检测电子邮件移动?

转载 作者:太空宇宙 更新时间:2023-11-03 21:45:34 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com