Quantcast
Channel: ImapX 2
Viewing all articles
Browse latest Browse all 1952

Updated Wiki: Idle support

$
0
0

Idle support

ImapX supports idle, so you can receive new messages just-in-time. Once new messages arrive in the current folder, they will be downloaded automatically and an event will be fired.

Important notice about idle

With the idle extension you can only get notifications for new messages for one folder at a time. Once another folder is selected, idle will be stopped.

Quick start

/* .. Init client, authenticate .. */  

client.Folders.Inbox.OnNewMessagesArrived += Folder_OnNewMessagesArrived;
client.Folders.Inbox.StartIdling();

void Folder_OnNewMessagesArrived(object sender, IdleEventArgs e)
{
       // New messages arrived// e.Folder: The folder in which the messages have arrived// e.Messages: The new messages
}

Checking if your server supports idle

You can check if your server supports the IDLE extension, however this check is not necessary as it is being done automatically once you try to start idle for a folder.

/* .. Init client, authenticate .. */if(client.Capabilities.Idle)
{
      // Server supports idle
}

Global events

There are four global idle events you can subscribe to - OnIdleStarted, OnIdlePaused, OnIdleStopped and OnNewMessagesArrived.

/* .. Init client, authenticate .. */          
client.OnIdleStarted += ImapClient_OnIdleStarted;
client.OnIdlePaused += ImapClient_OnIdlePaused;
client.OnIdleStopped += ImapClient_OnIdleStopped;
client.OnNewMessagesArrived += ImapClient_OnNewMessagesArrived;

void ImapClient_OnIdleStarted(object sender, IdleEventArgs e)
{
       // Idle has been started// e.Folder: Folder for which idle has been started
}

void ImapClient_OnIdlePaused(object sender, IdleEventArgs e)
{
       // Idle has been paused. This happens when other commands are being sent to the server.// This event is only for informational, idle is being resumed automatically, so no action is required.// e.Folder: Folder for which idle has been paused
}

void ImapClient_OnIdleStopped(object sender, IdleEventArgs e)
{
       // Idle has been stopped// e.Folder: Folder for which idle has been stopped
}

void ImapClient_OnNewMessagesArrived(object sender, IdleEventArgs e)
{
       // New messages arrived// e.Folder: The folder in whichthe messages have arrived// e.Messages: The new messages
}

Folder events

/* .. Init client, authenticate .. *//* .. folder = any folder .. */
     
folder.OnNewMessagesArrived += Folder_OnNewMessagesArrived;

void Folder_OnNewMessagesArrived(object sender, IdleEventArgs e)
{
       // New messages arrived// e.Folder: The folder in which the messages have arrived// e.Messages: The new messages
}

Starting idle

/* .. Init client, authenticate .. *//* .. folder = any folder .. */
folder.StartIdling()

Stopping idle

/* .. Init client, authenticate .. *//* .. folder = any folder .. */
folder.StopIdling()


Viewing all articles
Browse latest Browse all 1952

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>