使用c#取得未读邮件信息(exchange)

/// <summary>
  /// 取得未读邮件信息
  /// </summary>
  /// <returns></returns>
  private int GetUnReadMailCount(string strUserID,string strPassword)
  {
   string url= ConfigurationSettings.AppSettings["ExchangeServer"];   
   System.Net.HttpWebRequest Request;
   System.Net.WebResponse Response;
   System.Net.CredentialCache MyCredentialCache;
   string strRootURI = url+"/"+strUserID;
   string strUserName = strUserID;
   strPassword = strPassword;
   string strDomain = ConfigurationSettings.AppSettings["ExchangeDomain"];
   string strQuery ="";
   byte[] bytes = null;
   System.IO.Stream RequestStream = null;
   System.IO.Stream ResponseStream = null;
   XmlDocument ResponseXmlDoc = null;
   XmlNodeList HrefNodes= null;
   XmlNodeList SizeNodes= null;
   int count=0;
   try
   {
    // Build the SQL query.
    strQuery = "<?xml version=/"1.0/"?><D:searchrequest xmlns:D = /"DAV:/" >"
     + "<D:sql>SELECT /"DAV:displayname/",/"urn:schemas:httpmail:unreadcount/" FROM /"" + strRootURI + "/""
     //    +"where /"DAV:contentclass/"=/"urn:schemas:httpmail:read /""           
     //        + "WHERE /"DAV:ishidden/" = false AND /"DAV:isfolder/" = 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(strRootURI),
     "Basic",
     new System.Net.NetworkCredential(strUserName, strPassword, strDomain)//
     );//NTLM集成windows验证

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

    // 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);
    HrefNodes = ResponseXmlDoc.GetElementsByTagName("a:displayname");
    SizeNodes = ResponseXmlDoc.GetElementsByTagName("d:unreadcount");
    for(int i=0;i<HrefNodes.Count;i++)
    {
     if(HrefNodes[i].InnerText=="收件箱")
      count=int.Parse(SizeNodes[i].InnerText);
    }
    ResponseStream.Close();
    Response.Close();
   }
   catch(Exception)
   {
    // Catch any exceptions. Any error codes from the SEARCH
    // method request on the server will be caught here, also.
    return -1;
   }
   return count;
  }
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值