如何在asp.net中获取Exchange收件箱中未读邮件的数量?能给源码参考最好!
解决方案 »
- 在线等。。。。。沙发也有分
- RadUpload在本地会显示进度条,而服务器不会显示进度条..奇怪哦.
- 高分.net版本的许愿墙源码
- 我的网站放在租用的空间上,访问速度很慢
- 用户超时自动注销的问题
- .net程序下事件不触发,不是委托的原因!
- 使用什么办法可以知道我的Internet 邮箱(如163,sina等)中的新邮件个数?
- 如果在一个节点下增加新子节点后,该节点自动展开
- 着急!access数据库更新问题
- ASP。NET如何生成象CSDN论坛这样的三栏界面,上面一栏,左边一栏,右一栏,点左边右面的刷新
- 为何REPEATER取不到TEXTBOX中的值。
- Repeater控件的OnItemDataBound事件不能遍历最后一条是为什么
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.aspThe 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.aspusing 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:\" >" + "<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);
}
}
}
}