private void RefreshDeliveryQueue()
{
using (new WaitCursor())
{
listDeliveryQueue.Items.Clear();
hMailServer.Status status = _application.Status;
string queue = status.UndeliveredMessages;
string[] messages = queue.Split(Environment.NewLine.ToCharArray());
List<ListViewItem> itemsToAdd = new List<ListViewItem>();
foreach (string message in messages)
{
if (message.Length == 0)
continue;
string[] columns = message.Split('\t');
ListViewItem item = new ListViewItem(columns[0]);
item.SubItems.Add(columns[1]);
item.SubItems.Add(columns[2]);
item.SubItems.Add(columns[3]);
if (columns[4] == "1901-01-01 00:00:00")
item.SubItems.Add("As soon as possible");
else
// This is added to show HOLD in Status
// Note ends in 1 to signify difference
if (columns[4] == "1901-01-01 00:00:01")
item.SubItems.Add("Route HOLD");
else
item.SubItems.Add(columns[4]);
item.SubItems.Add(columns[7]);
item.SubItems.Add(columns[5]);
item.Tag = columns[0];
itemsToAdd.Add(item);
}
listDeliveryQueue.Items.AddRange(itemsToAdd.ToArray());
string messagesCount = "%d messages in queue";
messagesCount = messagesCount.Replace("%d", listDeliveryQueue.Items.Count.ToString());
labelNumberOfMessages.Text = messagesCount;
Marshal.ReleaseComObject(status);
}
}