Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EWS API:如何获取请求通知?_C#_Exchange Server_Exchangewebservices - Fatal编程技术网

C# EWS API:如何获取请求通知?

C# EWS API:如何获取请求通知?,c#,exchange-server,exchangewebservices,C#,Exchange Server,Exchangewebservices,我使用从Exchange2007服务器连接和检索邮件,工作正常。现在我想得到拉通知。我找到了一个例子,这就是我所尝试的: public IEnumerable<ItemEvent> GetPullNotifications(FolderId folderId) { PullSubscription subscription = Service.SubscribeToPullNotifications(new FolderId[] { folderId }, 5, null,

我使用从Exchange2007服务器连接和检索邮件,工作正常。现在我想得到拉通知。我找到了一个例子,这就是我所尝试的:

public IEnumerable<ItemEvent> GetPullNotifications(FolderId folderId)
{
    PullSubscription subscription = Service.SubscribeToPullNotifications(new FolderId[] { folderId }, 5, null, EventType.NewMail, EventType.Created, EventType.Deleted);
    return subscription.GetEvents().ItemEvents;
}

public void CheckPullNotifications(object source, ElapsedEventArgs e)
{
    Console.WriteLine("Check...");
    IEnumerable<ItemEvent> itemEvents = ewsClient.GetPullNotifications(WellKnownFolderName.Inbox);
    foreach (ItemEvent itemEvent in itemEvents)
    {
        switch (itemEvent.EventType)
        {
            case EventType.NewMail:
                MessageBox.Show("New mail: " + itemEvent.ItemId.UniqueId);
                break;
            case EventType.Deleted:
                MessageBox.Show("Mail deleted: " + itemEvent.ItemId.UniqueId);
                break;
        }
    }

    return;
}

//...
Timer myTimer = new Timer();
myTimer.Elapsed += new ElapsedEventHandler(CheckPullNotifications);
myTimer.Interval = 1000;
myTimer.Start();
public IEnumerable GetPullNotifications(FolderId FolderId)
{
PullSubscription=Service.SubscribeToPullNotifications(新FolderId[]{FolderId},5,null,EventType.NewMail,EventType.Created,EventType.Deleted);
返回subscription.GetEvents().ItemEvents;
}
public void CheckPullNotifications(对象源,ElapsedEventArgs e)
{
控制台。写线(“检查…”);
IEnumerable itemEvents=ewsClient.GetPullNotifications(WellKnownFolderName.Inbox);
foreach(itemEvents中的ItemEvent)
{
开关(itemEvent.EventType)
{
case EventType.NewMail:
MessageBox.Show(“新邮件:+itemEvent.ItemId.UniqueId”);
打破
案例事件类型。已删除:
MessageBox.Show(“邮件已删除:”+itemEvent.ItemId.UniqueId);
打破
}
}
返回;
}
//...
计时器myTimer=新计时器();
myTimer.Appead+=新的ElapsedEventHandler(CheckPullNotifications);
myTimer.Interval=1000;
myTimer.Start();
然而,当我把断点放在上面时,我从未到达上面的开关。我发了几封邮件,删除了一些,什么也没发生


你知道为什么这样不行吗?或者有没有其他方法可以获取请求通知?

我找到了一个解决方案。我在上面所做的是创建一个新订阅,并立即尝试获得结果。相反,我必须创建一次订阅,然后时不时地提取结果

例如:

public void SubscribePullNotifications(FolderId folderId)
{
    Subscription = Service.SubscribeToPullNotifications(new FolderId[] { folderId }, 1440, null, EventType.NewMail, EventType.Created, EventType.Deleted);
}

public void GetPullNotifications()
{
    IEnumerable<ItemEvent> itemEvents = Subscription.GetEvents().ItemEvents;
    foreach (ItemEvent itemEvent in itemEvents)
    {
        switch (itemEvent.EventType)
        {
            case EventType.NewMail:
                MessageBox.Show("New Mail");
                break;
        }
    }
}
// ...
SubscribePullNotifications(WellKnownFolderName.Inbox);
Timer myTimer = new Timer();
myTimer.Elapsed += new ElapsedEventHandler(GetPullNotifications);
myTimer.Interval = 10000;
myTimer.Start();
public void SubscribePullNotifications(FolderId FolderId)
{
Subscription=Service.SubscribeToPullNotifications(新FolderId[]{FolderId},1440,null,EventType.NewMail,EventType.Created,EventType.Deleted);
}
public void GetPullNotifications()
{
IEnumerable itemEvents=Subscription.GetEvents().itemEvents;
foreach(itemEvents中的ItemEvent)
{
开关(itemEvent.EventType)
{
case EventType.NewMail:
MessageBox.Show(“新邮件”);
打破
}
}
}
// ...
SubscribePullNotifications(WellKnownFolderName.Inbox);
计时器myTimer=新计时器();
myTimer.Appead+=新的ElapsedEventHandler(GetPullNotifications);
myTimer.Interval=10000;
myTimer.Start();

我找到了一个解决方案。我在上面所做的是创建一个新订阅,并立即尝试获得结果。相反,我必须创建一次订阅,然后时不时地提取结果

例如:

public void SubscribePullNotifications(FolderId folderId)
{
    Subscription = Service.SubscribeToPullNotifications(new FolderId[] { folderId }, 1440, null, EventType.NewMail, EventType.Created, EventType.Deleted);
}

public void GetPullNotifications()
{
    IEnumerable<ItemEvent> itemEvents = Subscription.GetEvents().ItemEvents;
    foreach (ItemEvent itemEvent in itemEvents)
    {
        switch (itemEvent.EventType)
        {
            case EventType.NewMail:
                MessageBox.Show("New Mail");
                break;
        }
    }
}
// ...
SubscribePullNotifications(WellKnownFolderName.Inbox);
Timer myTimer = new Timer();
myTimer.Elapsed += new ElapsedEventHandler(GetPullNotifications);
myTimer.Interval = 10000;
myTimer.Start();
public void SubscribePullNotifications(FolderId FolderId)
{
Subscription=Service.SubscribeToPullNotifications(新FolderId[]{FolderId},1440,null,EventType.NewMail,EventType.Created,EventType.Deleted);
}
public void GetPullNotifications()
{
IEnumerable itemEvents=Subscription.GetEvents().itemEvents;
foreach(itemEvents中的ItemEvent)
{
开关(itemEvent.EventType)
{
case EventType.NewMail:
MessageBox.Show(“新邮件”);
打破
}
}
}
// ...
SubscribePullNotifications(WellKnownFolderName.Inbox);
计时器myTimer=新计时器();
myTimer.Appead+=新的ElapsedEventHandler(GetPullNotifications);
myTimer.Interval=10000;
myTimer.Start();

订阅是否在范围之外定义?运行样本需要添加哪些dll?订阅是否在范围之外定义?运行样本需要添加哪些dll?