POP3_Messages.cs
上传用户:horngjaan
上传日期:2009-12-12
资源大小:2882k
文件大小:4k
源码类别:

Email服务器

开发平台:

C#

  1. using System;
  2. using System.Collections;
  3. namespace LumiSoft.MailServer.POP3
  4. {
  5. /// <summary>
  6. /// POP3 messages collection.
  7. /// </summary>
  8. public class POP3_Messages
  9. {
  10. private ArrayList m_POP3_Messages = null;
  11. /// <summary>
  12. /// Default constructor.
  13. /// </summary>
  14. public POP3_Messages()
  15. {
  16. m_POP3_Messages = new ArrayList();
  17. }
  18. #region function AddMessage
  19. /// <summary>
  20. /// Adds new message to message list.
  21. /// </summary>
  22. /// <param name="messageID"></param>
  23. /// <param name="messageSize"></param>
  24. public void AddMessage(string messageID,int messageSize)
  25. {
  26. POP3_Message msg = new POP3_Message(this);
  27. msg.MessageID    = messageID;
  28. msg.MessageSize  = messageSize;
  29. m_POP3_Messages.Add(msg);
  30. }
  31. #endregion
  32. #region function GetMessage
  33. /// <summary>
  34. /// Gets specified message from message list.
  35. /// </summary>
  36. /// <param name="messageNr"></param>
  37. /// <returns></returns>
  38. public POP3_Message GetMessage(int messageNr)
  39. {
  40. return (POP3_Message)m_POP3_Messages[messageNr];
  41. }
  42. #endregion
  43. #region function MessageExists
  44. /// <summary>
  45. /// Checks if message exists. NOTE marked for delete messages returns false.
  46. /// </summary>
  47. /// <param name="nr"></param>
  48. /// <returns></returns>
  49. public bool MessageExists(int nr)
  50. {
  51. try
  52. {
  53. if(nr > 0 && nr <= m_POP3_Messages.Count){
  54. POP3_Message msg = (POP3_Message)m_POP3_Messages[nr-1];
  55. if(!msg.MarkedForDelete){
  56. return true;
  57. }
  58. }
  59. }
  60. catch{
  61. }
  62. return false;
  63. }
  64. #endregion
  65. #region function GetTotalMessagesSize
  66. /// <summary>
  67. /// Gets messages total sizes. NOTE messages marked for deletion is excluded.
  68. /// </summary>
  69. /// <returns></returns>
  70. public int GetTotalMessagesSize()
  71. {
  72. int totalSize = 0;
  73. foreach(POP3_Message msg in m_POP3_Messages){
  74. if(!msg.MarkedForDelete){
  75. totalSize += msg.MessageSize;
  76. }
  77. }
  78. return totalSize;
  79. }
  80. #endregion
  81. #region function ResetDeleteFlags
  82. /// <summary>
  83. /// Unmarks all messages, which are marked for deletion.
  84. /// </summary>
  85. public void ResetDeleteFlags()
  86. {
  87. foreach(POP3_Message msg in m_POP3_Messages){
  88. msg.MarkedForDelete = false;
  89. }
  90. }
  91. #endregion
  92. #region Properties Implementation
  93. /// <summary>
  94. /// Gets count of messages. NOTE messages marked for deletion are excluded.
  95. /// </summary>
  96. public int Count
  97. {
  98. get{
  99. int messageCount = 0;
  100. foreach(POP3_Message msg in m_POP3_Messages){
  101. if(!msg.MarkedForDelete){
  102. messageCount++;
  103. }
  104. }
  105. return messageCount; 
  106. }
  107. }
  108. /// <summary>
  109. /// Gets messages, which aren't marked for deletion.
  110. /// </summary>
  111. public POP3_Message[] ActiveMessages
  112. {
  113. get{
  114. //--- Make array of unmarked messages --------//
  115. ArrayList activeMessages = new ArrayList();
  116. foreach(POP3_Message msg in m_POP3_Messages){
  117. if(!msg.MarkedForDelete){
  118. activeMessages.Add(msg);
  119. }
  120. }
  121. //--------------------------------------------//
  122. POP3_Message[] retVal = new POP3_Message[activeMessages.Count];
  123. activeMessages.CopyTo(retVal);
  124. return retVal; 
  125. }
  126. }
  127. /// <summary>
  128. /// Referance to Messages ArrayList.
  129. /// </summary>
  130. internal ArrayList Messages
  131. {
  132. get{ return m_POP3_Messages; }
  133. }
  134. /// <summary>
  135. /// 
  136. /// </summary>
  137. internal POP3_Message this[int messageNr]
  138. {
  139. get{ return (POP3_Message)m_POP3_Messages[messageNr-1]; }
  140. }
  141. #endregion
  142. }
  143. }