C# Exchange Mailbox Checker App
Exchange Server Forum Index Exchange Server
Discussion forums for Microsoft Exchange Server users.
Microsoft Outlook
 
 FAQFAQ   MemberlistMemberlist     RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 
 
Google
 
Web ExchangeServerHelp.com
C# Exchange Mailbox Checker App

 
Post new topic   Reply to topic    Exchange Server Forum Index -> Development
Author Message
Guest






Posted: Tue Nov 29, 2005 1:12 am    Post subject: C# Exchange Mailbox Checker App Reply with quote

Does anyone know the first bit about how I could write a simple C# app
that gets the number of unread messages in an exchange mailbox? We
work on a small helpdesk here and I have to find a better way to get
the word out that a new message has arrived in a shared mailbox without
forwarding it to everyone and without having to look for the little
number next to the mailbox all day...

Ideas?

Thanks,

Jacob

Back to top
wannaknowmore
Guest





Posted: Tue Nov 29, 2005 1:58 am    Post subject: Re: C# Exchange Mailbox Checker App Reply with quote

Depending on your IT infrastructure/constraints and the technology you
are allowed used you could use WEBDAV, MAPI or POP3.
I would suggest WEBDAV which is sure to work in pretty much any
infrastructure but is a bit difficult to implement.
Hope that helps,
Rahul
Back to top
Glen Scales [MVP]
Guest





Posted: Tue Nov 29, 2005 1:58 am    Post subject: Re: C# Exchange Mailbox Checker App Reply with quote

There a few ways you could approach this the first is to use the
notification sample application in the Exchange SDK I think the source is
VB6 but it wouldn't be very hard to translate have a look at
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wss/wss/_esdk_samples_exchmailnotify_intro.asp

The other thing you could do is setup an event sink maybe on that mailbox
that sent out a notification email to everybody when an email arrived or if
everyone uses RSS you could write a sink that created an RSS feed on the
mailbox eg
http://gsexdev.blogspot.com/2004/09/public-folder-rss-feed-event-sink-v2.html
or if everyone is using Instant messaging you could write a sink that sends
an IM to everyone. for more information on Event sync see the Exchange SDK.

Code wise in C# webdav is maybe the best option if you need to run the code
remotely to count the number of unread email in a mailbox just do a search
of the mailbox for unread email eg this is an adapted sample from
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wss/wss/_exch2k_searching_folders_http.asp

using System;
using System.Net;
using System.IO;
using System.Text;
using System.Xml;

namespace ExchangeSDK.Snippets.CSharp
{
class SearchingFoldersWebDAVUnread
{
[STAThread]
static void Main(string[] args)
{
// Variables.
System.Net.HttpWebRequest Request;
System.Net.WebResponse Response;
System.Net.CredentialCache MyCredentialCache;
string strInboxURI = "http://Servername/exchange/mailbox/inbox";
string strUserName = "username";
string strPassword = "password";
string strDomain = "domain";
string strQuery ="";
byte[] bytes = null;
System.IO.Stream RequestStream = null;
System.IO.Stream ResponseStream = null;
XmlDocument ResponseXmlDoc = null;
XmlNodeList DisplayNameNodes = null;

try
{
// Build the SQL query.
strQuery = "<?xml version=\"1.0\"?><D:searchrequest xmlns:D = \"DAV:\"
Quote:
"
+ "<D:sql>SELECT \"DAV:displayname\" FROM \"" + strInboxURI + "\""

+ "WHERE \"DAV:ishidden\" = false AND \"DAV:isfolder\" = false"
+ " AND \"urn:schemas:httpmail:read\" =
false</D:sql></D:searchrequest>";

// Create a new CredentialCache object and fill it with the network
// credentials required to access the server.
MyCredentialCache = new System.Net.CredentialCache();
MyCredentialCache.Add( new System.Uri(strInboxURI),
"NTLM",
new System.Net.NetworkCredential(strUserName, strPassword, strDomain)
);

// Create the HttpWebRequest object.
Request = (System.Net.HttpWebRequest)HttpWebRequest.Create(strInboxURI);

// Add the network credentials to the request.
Request.Credentials = MyCredentialCache;

// Specify the method.
Request.Method = "SEARCH";

// Encode the body using UTF-8.
bytes = Encoding.UTF8.GetBytes((string)strQuery);

// Set the content header length. This must be
// done before writing data to the request stream.
Request.ContentLength = bytes.Length;

// Get a reference to the request stream.
RequestStream = Request.GetRequestStream();

// Write the SQL query to the request stream.
RequestStream.Write(bytes, 0, bytes.Length);

// Close the Stream object to release the connection
// for further use.
RequestStream.Close();

// Set the content type header.
Request.ContentType = "text/xml";

// Send the SEARCH method request and get the
// response from the server.
Response = (HttpWebResponse)Request.GetResponse();

// Get the XML response stream.
ResponseStream = Response.GetResponseStream();

// Create the XmlDocument object from the XML response stream.
ResponseXmlDoc = new XmlDocument();
ResponseXmlDoc.Load(ResponseStream);

// Build a list of the DAV:href XML nodes, corresponding to the folders
// in the mailbox. The DAV: namespace is typically assgigned the a:
// prefix in the XML response body.
DisplayNameNodes = ResponseXmlDoc.GetElementsByTagName("a:displayname");
Console.WriteLine("Number of Unread Messages:" +
DisplayNameNodes.Count);


// Clean up.
ResponseStream.Close();
Response.Close();

}
catch(Exception ex)
{
// Catch any exceptions. Any error codes from the SEARCH
// method request on the server will be caught here, also.
Console.WriteLine(ex.Message);
}
}
}
}

Cheers
Glen


<jacob.eiler@gmail.com> wrote in message
news:1133205155.924829.42130@z14g2000cwz.googlegroups.com...
Quote:
Does anyone know the first bit about how I could write a simple C# app
that gets the number of unread messages in an exchange mailbox? We
work on a small helpdesk here and I have to find a better way to get
the word out that a new message has arrived in a shared mailbox without
forwarding it to everyone and without having to look for the little
number next to the mailbox all day...

Ideas?

Thanks,

Jacob


Back to top
 
Post new topic   Reply to topic    Exchange Server Forum Index -> Development All times are GMT
Page 1 of 1

 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum




Windows Server Dedicated Servers
New Topics Powered by phpBB